XML:是可擴充的标記語言。
XML的作用:
- 儲存句,而且這些資料具有自我描述性
- 而且以作為項目或者子產品的配置檔案
- 可以作為網絡傳輸資料的格式(JSON為主)
接下來建立一個xml檔案。
點選IDEA中的FIle->New->file->“命名”.xml
第一個xml檔案的代碼
<?xml version="1.0" encoding="utf-8" ?>
<!--
以上内容就是xml檔案的聲明
version 表示xml的版本
encoding 表示xml檔案本身的編碼
-->
<books><!--books表示多個圖書資訊-->
<book sn="SN12333"><!--book表示一個圖書資訊,SN屬性表示圖書序列号-->
<name>時間簡史</name><!--name标簽表示書名-->
<author>霍金</author><!--author标簽表示作者-->
<price>169</price><!--price标簽表示圖書價格-->
</book>
<book sn="SN12334"><!--book表示一個圖書資訊,SN屬性表示圖書序列号-->
<name>三國演義</name><!--name标簽表示書名-->
<author>羅貫中</author><!--author标簽表示作者-->
<price>200</price><!--price标簽表示圖書價格-->
</book>
</books>
XML元素
從開始标簽直到結束标簽的部分。元素可包含其他元素,文本,或者兩者的混合物。元素也可以擁有屬性。
使用dom4j就行xml檔案解析
package com.xml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.io.PrintStream;
public class Dom4jTest {
@Test
public void test1() throws DocumentException {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("./xml/books.xml");
System.out.println(document);
}
}
輸出如下:
org.dom4[email protected] [Document: name ./xml/books.xml]
解析books.xml的内容
package com.xml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.awt.print.Book;
import java.io.PrintStream;
import java.util.List;
public class Dom4jTest {
/**
*讀取books.xml檔案成成book類
*/
@Test
public void test2() throws DocumentException {
System.out.println(":books");
//1.讀取books.xml檔案
SAXReader reader = new SAXReader();
//在Junit測試中,相對路徑是從子產品名開始算的
Document document = reader.read("./src/books.xml");
//2.通過Dcoument對象擷取根元素
Element rootElement = document.getRootElement();
//3.通過根元素擷取book标簽對象
//element() elements()都是通過标簽名查找子元素
List<Element> books = rootElement.elements("books");
for(Element book:books){
//asXML()把标簽對象轉化為标簽字元
Element nameElement = book.element("name");
//getText()方法可以擷取标簽中的文本内容
String nameText = nameElement.getText();
//直接擷取标簽名的文本内容
String priceText = book.elementText("price");
String authorText = book.elementText("author");
String snValue = book.attributeValue("sn");
System.out.println(new book(snValue, nameText, Double.parseDouble(priceText), authorText));
}
}
}