XML入門介紹

来源:https://www.cnblogs.com/kohler21/archive/2022/07/13/16474116.html
-Advertisement-
Play Games

XML 簡介 什麼是 xml? xml 是可擴展的標記性語言。 xml 的作用? xml 的主要作用有: 1、用來保存數據,而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網路傳輸數據的格式(現在 JSON 為主)。 xml 語法 文檔聲明。 元素(標簽) xml ...


目錄

XML 簡介

什麼是 xml?
xml 是可擴展的標記性語言。

xml 的作用?
xml 的主要作用有:
1、用來保存數據,而且這些數據具有自我描述性
2、它還可以做為項目或者模塊的配置文件
3、還可以做為網路傳輸數據的格式(現在 JSON 為主)。

xml 語法

  1. 文檔聲明。
  2. 元素(標簽)
  3. xml 屬性
  4. xml 註釋
  5. 文本區域(CDATA 區)

文檔聲明

我們先創建一個簡單 XML 文件,用來描述圖書信息

(1)創建一個 xml 文件

文件名:

<?xml version="1.0" encoding="UTF-8"?> xml 聲明。
<!-- xml 聲明 version 是版本的意思 encoding 是編碼 -->

而且這個<?xml 要連在一起寫,否則會有報錯

屬性

version 是版本號
encoding 是 xml 的文件編碼
standalone="yes/no" 表示這個 xml 文件是否是獨立的 xml 文件

(2)圖書有 id 性 屬性 一 表示唯一 標識,書名,有作者,價格的信息

books.xml文件內容:

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 聲明 version 是版本的意思 encoding 是編碼 -->
<books> <!-- 這是 xml 註釋 -->
    <book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
        <name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的信息 -->
        <author>耿祥義、張躍平</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
        <publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
        <price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
    </book>
    <book id="SN9787020122172"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
        <name>駱駝祥子</name> <!-- name 標簽描述 的是圖書 的信息 -->
        <author>老舍</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
        <publisher>人民文學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
        <price>20.20</price><!-- price 單詞是價格,描述的是圖書 的價格 -->
    </book>
</books>

在瀏覽器中可以查看到文檔:

xml 註釋

html 和 XML 註釋 一樣 :

<!-- html 註釋 -->

元素(標簽)

html 標簽

格式 <標簽名>封裝的數據</標簽名>
單標簽 <標簽名 /> <br /> 換行 <hr />水平線
雙標簽 <標簽名>封裝的數據</標簽名>

1. 標簽名大小寫不敏感
2. 標簽有屬性,有基本屬性和事件屬性
3. 標簽要閉合(不閉合 ,html 中不報錯。但我們要養成良好的書寫習慣。閉合)

1)什麼是 xml 元素

元素是指從開始標簽到結束標簽的內容。
例如:

<title>java2實用教程</title>

元素 我們可以簡單的理解為是 標簽。
Element 翻譯 元素

2)XML 命名規則

XML 元素必須遵循以下命名規則:

  1. 名稱可以含字母、數字以及其他的字元
    例如:
<book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的信息 -->
<author>耿祥義、張躍平</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
  1. 名稱不能以數字或者標點符號開始

  1. 儘管以“xml”(或者 XML、Xml)是可以的、不報錯的,但是不建議名稱以字元 “xml”(或者 XML、Xml)開始

  1. 名稱不能包含空格

3)xml 也 中的元素(標簽)也 成 分成 單標簽和雙標簽:

單標簽
格式:

<標簽名 屬性=”值” 屬性=”值” ...... />

雙標簽
格式:

< 標簽名 屬性=”值” 屬性=”值” ......>文本數據或子標簽</標簽名>

xml 屬性

xml 的標簽屬性和 html 的標簽屬性是非常類似的, 屬性可以提供元素的額外信息
在標簽上可以書寫屬性:
一個標簽上可以書寫多個屬性。每個屬性的值必須使用 引號 引起來。
的規則和標簽的書寫規則一致。

API文檔截圖:

  1. 屬性必須使用引號引起來,不引起來會報錯
    示例:

語法規則

  1. 所有 XML 元素都須有關閉標簽

  1. XML 標簽對大小寫敏感

  2. XML 必須正確地嵌套

  3. XML 文檔必須有根元素
    根元素就是頂級元素,
    沒有父標簽的元素,叫頂級元素。
    根元素是沒有父標簽的頂級元素,而且是唯一一個才行。

  4. XML 的屬性值須加引號

  5. XML 中的特殊字元



7. 文本區域(CDATA 區)
CDATA 語法可以告訴 xml 解析器,我 CDATA 里的文本內容,只是純文本,不需要 xml 語法解析
CDATA 格式:

<![CDATA[ 這裡可以把你輸入的字元原樣顯示,不會解析 xml ]]>

示例:

    <book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
        <name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的信息 -->
        <author><![CDATA[<<<耿祥義、張躍平>>>]]></author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
        <publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
        <price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
    </book>

xml 解析技術介紹

xml 可擴展的標記語言。
不管是 html 文件還是 xml 文件它們都是標記型文檔,都可以使用 w3c 組織制定的 dom 技術來解析。

document 對象表示的是整個文檔(可以是 html 文檔,也可以是 xml 文檔)

早期 JDK 為我們提供了兩種 xml 解析技術 DOM 和 和 Sax 簡介( 已經過時,但需要知道這兩種技術 )
dom 解析技術是 W3C 組織制定的,而所有的編程語言都對這個解析技術使用了自己語言的特點進行實現。
Java 對 dom 技術解析標記也做了實現。
sun 公司在 JDK5 版本對 dom 解析技術進行升級:SAX( Simple API for XML )
SAX 解析,它跟 W3C 制定的解析不太一樣。它是以類似事件機制通過回調告訴用戶當前正在解析的內容。
它是一行一行的讀取 xml 文件進行解析的。不會創建大量的 dom 對象。
所以它在解析 xml 的時候,在記憶體的使用上。和性能上。都優於 Dom 解析。
第三方的解析:
jdom 在 dom 基礎上進行了封裝 、dom4j 又對 jdom 進行了封裝。
pull 主要用在 Android 手機開發,是在跟 sax 非常類似都是事件機制解析 xml 文件。
這個 Dom4j 它是第三方的解析技術。我們需要使用第三方給我們提供好的類庫才可以解析 xml 文件。

dom4j 解析技術

Dom4j 類庫的使用

Dom4j包下載:https://kohler.lanzouv.com/iv8R207qmvkh
解壓後:

dom4j 目錄的介紹

  1. docs 是文檔目錄

  1. 查 如何查 Dom4j 的文檔

  1. Dom4j 快速入門

  1. lib 目錄


5. src 目錄是第三方類庫的源碼目錄

dom4j 編程步驟

第一步: 先載入 xml 文件創建 Document 對象
第二步:通過 Document 對象拿到根元素對象
第三步:通過根元素.elelemts(標簽名); 可以返回一個集合,這個集合里放著。所有你指定的標簽名的元素對象
第四步:找到你想要修改、刪除的子元素,進行相應在的操作
第五步,保存到硬碟上

獲取 document 對象

創建一個 lib 目錄,並添加 dom4j 的 jar 包。並添加到類路徑。

需要解析的 books.xml 文件內容:

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 聲明 version 是版本的意思 encoding 是編碼 -->
<books> <!-- 這是 xml 註釋 -->
<book id="SN9787302575443"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>Java 2實用教程(第6版)</name> <!-- name 標簽描述 的是圖書 的信息 -->
<author><![CDATA[<<<耿祥義、張躍平>>>]]></author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>清華大學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>65</price> <!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>
<book id="SN9787020122172"> <!-- book 標簽描述一本圖書 id 屬性描述 的是圖書 的編號 -->
<name>駱駝祥子</name> <!-- name 標簽描述 的是圖書 的信息 -->
<author>老舍</author> <!-- author 單詞是作者的意思 ,描述圖書作者 -->
<publisher>人民文學出版社</publisher> <!--publisher 單詞是出版社的意思,描述圖書的出版社-->
<price>20.20</price><!-- price 單詞是價格,描述的是圖書 的價格 -->
</book>
</books>

解析獲取 Document 對象的代碼
第一步,先創建 SaxReader 對象。這個對象,用於讀取 xml 文件,並創建
Document

/*
* dom4j 獲取 Documet 對象
*/
@Test
public void getDocument() throws DocumentException {
// 要創建一個 Document 對象,需要我們先創建一個 SAXReader 對象
SAXReader reader = new SAXReader();
// 這個對象用於讀取 xml 文件,然後返回一個 Document。
Document document = reader.read("src/books.xml");
// 列印到控制台,看看是否創建成功
System.out.println(document);
}

遍歷 、遍歷 簽 標簽 獲取所有標簽中的內容

 /*
     * 讀取 xml 文件中的內容(xml文件即上一步的books.xml)
     */
    @Test
    public void readXML() throws DocumentException {
        // 需要分四步操作:
        // 第一步,通過創建 SAXReader 對象。來讀取 xml 文件,獲取 Document 對象
        // 第二步,通過 Document 對象。拿到 XML 的根元素對象
        // 第三步,通過根元素對象。獲取所有的 book 標簽對象
        // 第四小,遍歷每個 book 標簽對象。然後獲取到 book 標簽對象內的每一個元素,再通過 getText() 方法拿到起始標簽和結束標簽之間的文本內容
        // 第一步,通過創建 SAXReader 對象。來讀取 xml 文件,獲取 Document 對象
        SAXReader reader = new SAXReader();
        //在Junit測試中,相對路徑是從模塊名開始算
        Document document = reader.read("src/books.xml");
        //第二步,通過 Document 對象。拿到 XML 的根元素對象
        Element rootElement =  document.getRootElement();
        //System.out.println(rootElement);
        //第三步,通過根元素對象。獲取所有的 book 標簽對象
        //Element.elements(標簽名)它可以拿到當前元素下的指定的子元素的集合
        //element()和elements()都是通過標簽名查找子元素
        List <Element> books = rootElement.elements("book");
        //第四步,遍歷每個 book 標簽對象。然後獲取到 book 標簽對象內的每一個元素,
        for (Element book : books) {
        // 拿到 book 下麵的 name 元素對象
        Element nameElement = book.element("name");
        // 拿到 book 下麵的 price 元素對象
        Element priceElement = book.element("price");
        // 拿到 book 下麵的 author 元素對象
        Element authorElement = book.element("author");
        // 拿到 book 下麵的 publisher 元素對象
        Element publisherElement = book.element("publisher");
        // 再通過 getText() 方法拿到起始標簽和結束標簽之間的文本內容
        System.out.println("書名:" + nameElement.getText() + " , 價格:"
            + priceElement.getText() + "元, 作者:" + authorElement.getText() + ",出版社:" + publisherElement.getText());
        }
    }
}

列印內容:

如圖片失效等情況請參閱公眾號文章:https://mp.weixin.qq.com/s/T4tsUg4_YRiDRPEF7fhOtQ

歡迎關註公眾號:“愚生淺末”,一起學習交流。

歡迎關註我的公眾號,共同學習


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL Server 中的事務是什麼? SQL Server 中的事務是一組被視為一個單元的 SQL 語句,它們按照“做所有事或不做任何事”的原則執行,成功的事務必須通過 ACID 測試。 事務的 ACID 屬性是什麼? 首字母縮寫詞 ACID 是指事務的四個關鍵屬性 原子性: Atomicity ...
  • 更多技術交流、求職機會、試用福利,歡迎關註位元組跳動數據平臺微信公眾號,回覆【1】進入官方交流群 近年來,OLAP產品的競爭日漸激烈,目前企業間流行的既有Impala、Greenplum等上一代較為成熟的數據分析產品,也有ClickHouse、Kylin、Druid、Doris、StarRocks等在 ...
  • 日前,福建海峽銀行新一代核心業務系統正式上線,關鍵業務系統採用“微服務+分散式”架構,順利完成資料庫國產化替換。 新核心改造歷時14個月,依托騰訊雲企業級分散式資料庫TDSQL良好的相容性、成熟的遷移能力和技術服務支持,海峽銀行快速完成了核心系統的國產資料庫替換,並基於騰訊雲資料庫TDSQL兩地三中 ...
  • 時間:2022-07-13 安裝版本:MySQL-community-8.0.29 0. 刪除MariaDB 在CentOS 7中預設有安裝MariaDB,這個是MySQL的分支,通過其他方式安裝MySQL需要刪除MariaDB或補全依賴關係,但通過yum安裝則會自動覆蓋MariaDB並補全依賴(也 ...
  • . 版本:v0.3 作者:河東西望 日期:2022-7-13 . gerrit系統的上手使用有兩個難點: 部署repo倉庫。 配置訪問控制。 想要上手使用gerrit的同仁們,搭建部署好gerrit系統之後,會發現gerrit的許可權配置不知道從哪裡下手。而預設的許可權配置非常簡單而且開放,不符合企業各 ...
  • **耗時繁雜的歸因監測如何減負增效?怎樣合理評估不同拉新渠道的用戶質量?**類似問題相信每一個移動互聯網App推廣人都會不斷問自己,但卻一直找不到合適的方法從根源解決。廣告互動行為與用戶應用內行為的割裂,是阻礙廣告效果衡量與提升的較大難點。那麼如何解決這個難點呢?分析服務基於渠道評估和買量洞察,給出 ...
  • 瀏覽器改變url 1 改變瀏覽器訪問地址的方式 1-1 不刷新頁面內容,改變瀏覽器訪問地址url 1-1-1 query param location.search = '?page=2'; 1-1-2 hash window.location.hash = 'www.zhihu.com' 如果 原 ...
  • 一、快速入門 1.JavaScript的兩種引入方式 方式一:直接在html裡面寫 目的:實現簡單的彈窗 點擊查看代碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--sc ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...