xml
一、XML 簡介
什么是 xml?
xml 是可擴展的標記性語言,
xml 的作用?
1.用來保存資料,而且這些資料具有自我描述性;
2.它可以作為專案或者模塊的組態檔;
3.還可以作為網路傳輸資料的格式(現在以JSON為主),
二、xml 語法
1、檔案宣告
我們先創建一個簡單 XML 檔案,用來描述圖書資訊,①創建一個XML檔案

輸入檔案名:

②books.xml檔案存放圖書資訊,(圖書有 id 屬性 表示唯一 標識,書名,有作者,價格的資訊)
<?xml version="1.0" encoding="utf-8" ?> <!--xml的宣告,version:版本 encoding:編碼--> <books> <book id="sn7384378"><!-- book用來描述一本書,id屬性描述圖書的編號 --> <name>java編程思想</name> <author>小張</author> <price>9.9</price> </book> <book id="sn3785738"> <name>西游記</name> <author>吳承恩</author> <price>99</price> </book> </books>
在瀏覽器中可以查看到檔案:

2、xml 注釋
xml的注釋和HTML是一樣的:<!-- 注釋內容 -->
3、元素(標簽)
什么是 xml 元素 ?xml元素指的是從開始標簽到結束標簽的部分,元素可以包含其它元素、文本或兩者的混合物,元素也可以擁有屬性,
XML 命名規則:①名稱可以含字母、數字以及其他的字符;
②名稱不能以數字或標點符號開始;
③名稱不能包含空格;
xml 中的元素(標簽)也 分成 單標簽和雙標簽:單標簽: <標簽名 屬性名="屬性值" /> 雙標簽: <標簽名 屬性名="屬性值"> 封裝的資料 </標簽名>

4、xml 屬性
xml 的標簽屬性和 html 的標簽屬性是非常類似的,屬性可以提供元素的額外資訊,
在標簽上可以書寫屬性: 一個標簽上可以書寫多個屬性,每個屬性的值必須使用 引號 引起來,5、語法規則
①所有的xml標簽,無論單標簽還是雙標簽,都必須閉合,
②xml標簽對大小寫敏感,
③xml標簽必須正確的嵌套,
④XML 檔案必須有根元素
根元素就是頂級元素,
沒有父標簽的元素,叫頂級元素, 根元素是沒有父標簽的頂級元素,而且是唯一一個才行,
⑤xml的屬性值必須加引號,
⑥xml中的特殊字符:

⑦文本區域(CDATA 區)
CDATA 語法可以告訴 xml 決議器,我 CDATA 里的文本內容,只是純文本,不需要 xml 語法決議,
CDATA 格式:
<![CDATA[ 這里可以把你輸入的字符原樣顯示,不會決議 xml ]]>
三、xml 決議技術介紹
xml 可擴展的標記語言, 不管是 html 檔案還是 xml 檔案它們都是標記型檔案,都可以使用 w3c 組織制定的 dom 技術來決議, document 物件表示的是整個檔案(可以是 html 檔案,也可以是 xml 檔案)
四、dom4j 決議技術(重點*****)
由于 dom4j 它不是 sun 公司的技術,而屬于第三方公司的技術,我們需要使用 dom4j 就需要到 dom4j 官網下載 dom4j
的 jar 包,1、Dom4j 類別庫的使用

解壓后:

2、dom4j 目錄的介紹
docs 是 文 檔 目 錄
如何查 Dom4j 的檔案

Dom4j 快速入門

lib 目錄

src目錄是dom4j的原始碼目錄

3、dom4j 編程步驟:

4、獲取 document 物件
創建一個 lib 目錄,添加 dom4j 的 jar 包,并添加到類路徑:
準備需要決議的books.xml檔案(此檔案在src下):
<?xml version="1.0" encoding="utf-8" ?> <!--xml的宣告,version:版本 encoding:編碼--> <books> <book id="sn7384378"><!-- book用來描述一本書,id屬性描述圖書的編號 --> <name>java編程思想</name> <author>小張</author> <price>9.9</price> </book> <book id="sn3785738"> <name>西游記</name> <author>吳承恩</author> <price>99</price> </book> </books>
獲取document物件:
public class dom4jTest { @Test public void getDocument() throws DocumentException { //1.創建一個SAXReader物件 SAXReader reader = new SAXReader(); //2.這個物件用于讀取xml檔案,回傳Document Document document = reader.read("src/books.xml"); //3.列印,查看是否創建成功 System.out.println(document); } }
效果如下:

5、遍歷 標簽 獲取所有標簽中的內容(*****重點)
Book.java檔案:
public class Book { private String id; private String name; private String author; private Double price; public Book() { } public Book(String id, String name, String author, Double price) { this.id = id; this.name = name; this.author = author; this.price = price; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } @Override public String toString() { return "Book{" + "id=" + id + ", name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + '}'; } }
dom4j決議測驗類:
public class dom4jTest { @Test public void readXml() throws DocumentException { //1.創建一個SAXReader物件 SAXReader reader = new SAXReader(); Document document = reader.read("src/books.xml"); //2.通過document物件,拿到xml的根元素物件 Element rootElement = document.getRootElement(); //列印測驗 // System.out.println(rootElement.asXML()); //3.通過根元素物件,獲取所有的book標簽物件構成的集合 List<Element> books = rootElement.elements("book"); //4.遍歷books,獲取每一個book物件 for (Element book : books){ //拿到book的屬性值 String sn = book.attributeValue("sn"); //拿到book下面的name元素中的內容 Element name = book.element("name"); String nameText = name.getText(); //拿到book下面的author元素中的內容 Element author = book.element("author"); String authorText = author.getText(); //拿到book下面的price元素中的內容 Element price = book.element("price"); String priceText = price.getText(); //將獲取到的資料封裝成一個Book物件 Book b = new Book(sn, nameText, authorText, Double.parseDouble(priceText)); System.out.println(b); } } }
效果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/208601.html
標籤:其他
上一篇:CSP-S-2020
