java XML 文件

java XML 文件

1. XML的概念

可擴展標記語言,它可以用來標記數據、定義數據類型,是一種允許用戶對自己標記語言進行定義的源語言。XML的簡單易於在任何應用程序中讀/寫數據,這使XML成爲數據交互的唯一共同語言。

2. 基本語法

2.1 基本語法格式
  1. XML文件名後綴是.xml
  2. XML第一行是對當前文件的定義聲明
  3. XML文件中有且只有一個根標籤
  4. 屬性值必須使用引號包含
  5. 標籤必須正確匹配,正確開始和關閉
  6. XML標籤內嚴格區分大小寫
<?xml version="1.0" encoding="utf-8">
<users>
	<user id="1">
		<name>小明</name>
		<age>16</age>
		<gender>male</gender>
	</user>
	<user id="1">
  		<name>小明</name>
 		 <age>16</age>
 		 <gender>male</gender>
	 </user>
</user>
2.2 XML文件組成
  1. 文檔聲明: <?xml 屬性列表 ?> <?xml version = "1.0" encoding = "utf - 8" ?> version : 當前xml文件版本號
    encoding : 編碼方式
  2. 標籤內容自定義:
    a. 自定義標籤允許使用英文字母,數字和其他標點符號。
    b. 不允許使用數組和標點符號開頭,只能用英文字母。
    c. 不允許在自定義標籤內使用xml標記,XML也不行
    d. 名字不允許出現空格
  3. 屬性
    可以給標籤一個屬性,有時候要求ID屬性是唯一的

3. XML解析

3.1 XML解析思路
3.1.1 DOM解析
Document Object Model 文件對象模型
把XML整個文件看做一個Document對象,每一個節點看做一個Element,節點中有Attribute,或者當前節點中存在Text文本內容。
DOM是將整個XML文件讀取到計算機內存中,可以進行CRUD操作。
缺點:佔用了大量的內存
適用環境:服務器對於XML文件的解析過程。
3.1.2 SAX解析
逐行讀取,給予一定的事件操作。
讀取一行內容,釋放上一行內容,可以有效的節約內存空間
缺點:
	不能對XML文件,進行增刪改
適用的環境:
	手機讀取解析XML文件時採用的方式
3.2 XML文件解析工具
  1. JAXP: SUN提供的一個基本的解析器,支持DOM和SAX兩種解析方式,但是操作很繁瑣,不便於程序員開發。
  2. Dom4j::DOM For Java 一款非常優秀的解析器。
  3. Jsoup :基於Java完成的對於HTML解析的工具,因爲HTML和XML文件都是標記語言。
  4. PULL:Android手機上集成的XML解析工具,SAX方式解析
Dom4j

涉及方法

  1. SAXReader();
    解析XML文件使用的核心類
    read() --> XML文件Document對象
  2. Document對象中可以使用方法
    Element getRootElement(); 獲取當前XML文件的根節點對象
  3. Element對象中可以使用方法
    List elements();
    當前節點下的所有子節點
    List elements(String name);
    當前節點下所有指定名字的子節點
    Attribute attribute(String name);
    根據屬性名獲取對應的屬性對象Attribute
    Attribute節點中可以使用String getValue()來獲取對應的節點數據
    String getName();
    獲取當前節點的名字
    String getText();
    獲取當前節點對應的文本數據
// 當前XML文件的Document對象
Document document = new SAXReader().read(new File("./xml/User.xml"));

// 獲取根節點 Root Element
Element rootElement = document.getRootElement();

 // 獲取Root Element下子節點
List<Element> elements = rootElement.elements();

Element teacher = rootElement.element("teacher");
// 獲取屬性節點指定屬性值
 System.out.println(teacher.attribute("id").getValue());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章