xml 是可擴展的標記性語言。xml 的主要作用有: 1、用來保存數據,而且這些數據具有自我描述性 2、它還可以做爲項目或者模塊的配置文件 3、還可以做爲網絡傳輸數據的格式(現在 JSON 爲主)。
CDATA 語法可以告訴 xml 解析器,我 CDATA 裏的文本內容,只是純文本,不需要 xml 語法解析
CDATA 格式: <![CDATA[ 這裏可以把你輸入的字符原樣顯示,不會解析 xml]]>。
dom4j 編程步驟:
第一步: 先加載 xml 文件創建 Document 對象 第二步:通過 Document 對象拿到根元素對象 第三步:通過根元素.elelemts(標籤名); 可以返回一個集合,這個集合裏放着。所有你指定的標籤名的元素對象 第四步:找到你想要修改、刪除的子元素,進行相應在的操作 第五步,保存到硬盤上
需要解析的 books.xml 文件內容
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪劍譜</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花寶典</name>
<price>99.99</price>
<author>班長</author>
</book>
</books>
解析獲取 Document 對象的代碼 第一步,先創建 SaxReader 對象。這個對象,用於讀取 xml 文件,並創建 Document
需要分四步操作:
第一步,通過創建 SAXReader 對象。來讀取 xml 文件,獲取 Document 對象
第二步,通過 Document 對象。拿到 XML 的根元素對象
第三步,通過根元素對象。獲取所有的 book 標籤對象
第四步,遍歷每個 book 標籤對象。然後獲取到 book 標籤對象內的每一個元素,再通過 getText() 方法拿到起始標籤和結 束標籤之間的文本內容
/* * 讀取 xml 文件中的內容 */
@Test public void readXML() throws DocumentException {
// 需要分四步操作:
// 第一步,通過創建 SAXReader 對象。來讀取 xml 文件,獲取 Document 對象
// 第二步,通過 Document 對象。拿到 XML 的根元素對象
// 第三步,通過根元素對象。獲取所有的 book 標籤對象
// 第四步,遍歷每個 book 標籤對象。然後獲取到 book 標籤對象內的每一個元素,再通過 getText() 方法拿到起始標籤和結束標籤之間的文本內容
// 第一步,通過創建 SAXReader 對象。來讀取 xml 文件,獲取 Document 對象
SAXReader reader = new SAXReader(); Document document = reader.read("src/books.xml");
// 第二步,通過 Document 對象。拿到 XML 的根元素對象
Element root = document.getRootElement();
// 打印測試
// Element.asXML() 它將當前元素轉換成爲 String 對象 //
System.out.println( root.asXML() );
// 第三步,通過根元素對象。獲取所有的 book 標籤對象
// Element.elements(標籤名)它可以拿到當前元素下的指定的子元素的集合
List<Element> books = root.elements("book");
// 第四步,遍歷每個 book 標籤對象。然後獲取到 book 標籤對象內的每一個元素,
for (Element book : books) {
// 測試
// System.out.println(book.asXML());
// 拿到 book 下面的 name 元素對象
Element nameElement = book.element("name");
// 拿到 book 下面的 price 元素對象
Element priceElement = book.element("price");
// 拿到 book 下面的 author 元素對象
Element authorElement = book.element("author");
// 再通過 getText() 方法拿到起始標籤和結束標籤之間的文本內容
System.out.println("書名" + nameElement.getText() + " , 價格:" + priceElement.getText() + ", 作者:" + authorElement.getText()); }
打印內容: