一、XML簡介
1. 什么是xml?
xml 是可擴展的標記性語言
2. xml的作用?
- 用來保存資料,而且這些資料具有自我描述性
- 它還可以做為專案或者模塊的組態檔
- 還可以做為網路傳輸資料的格式(現在 JSON 為主)
二、XML語法
首先創建一個xml檔案
<?xml version="1.0" encoding="UTF-8" ?>
<!--
檔案的宣告
version="1.0" 表示xml的版本
encoding="UTF-8" 表示xml檔案本身的編碼
-->
圖書有 標識,書名,有作者,價格的資訊
<?xml version="1.0" encoding="UTF-8" ?>
<!--
檔案的宣告
version="1.0" 表示xml的版本
encoding="UTF-8" 表示xml檔案本身的編碼
-->
<!-- 多個圖書資訊-->
<books>
<!--一個圖書的基本資訊-->
<book sn="SN123454321"> <!--屬性值-->
<name>雍正王朝</name>
<author>二月河</author>
<price>99</price>
</book>
<book sn="SN987654321">
<name>康熙大帝</name>
<author>二月河</author>
<price>99</price>
</book>
</books>
- 注釋和html一樣
- 其他的基本上看看就懂了
注意:
- XML 檔案必須有根元素,并且是唯一的,就如上面的books一樣,
三、XML決議
這里主要就使用dom4j技術來決議
首先需要到官網找到這個jar包,直接復制到當前的模塊下即可
1. Dom4j編程步驟
- 先加載 xml 檔案創建 Document 物件
- 通過 Document 物件拿到根元素物件
- 通過根元素.elelemts(標簽名); 可以回傳一個集合,這個集合里放著,所有你指定的標簽名的元素物件
- 找到你想要修改、洗掉的子元素,進行相應在的操作
- 保存到硬碟上或者其他地方
2. 獲取document物件
1. 首先創建一個lib包,直接把網上找到的dom4j的jar包復制到lib下,然后

2. 寫一個需要決議的books.xml檔案
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book sn="SN123454321">
<name>雍正王朝</name>
<author>二月河</author>
<price>99</price>
</book>
<book sn="SN987654321">
<name>康熙大帝</name>
<author>二月河</author>
<price>99</price>
</book>
</books>
3. 獲取Document物件的代碼
@Test
public void test1() throws DocumentException {
// 1. 先創建一個SAXReader物件
SAXReader saxReader = new SAXReader();
// 2. 這個物件用來讀取xml檔案,回傳一個document
Document read = saxReader.read("src/books.xml");
// 3. 列印到控制臺,查看是否成功
System.out.println(read);
}
3. 遍歷標簽獲取內容
需要分四步操作:
- 通過創建 SAXReader 物件,來讀取 xml 檔案,獲取 Document 物件
- 通過 Document 物件,拿到 XML 的根元素物件
- 通過根元素物件,獲取所有的 book 標簽物件
- 遍歷每個 book 標簽物件,然后獲取到 book 標簽物件內的每一個元素,再通過 getText() 方法拿到起始標簽和結 束標簽之間的文本內容
首先寫一個Book類,用于存放資料
package com.md.java;
/**
* @author MD
* @create 2020-07-24 8:45
*/
public class Book {
private String sn;
private String name;
private String author;
private Double price;
public Book() {
}
public Book(String sn, String name, String author, Double price) {
this.sn = sn;
this.name = name;
this.author = author;
this.price = price;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
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{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
讀取xml檔案中的內容,xml檔案就是上面的books.xml
/**
* 讀取books.xml檔案生成的Book類
*/
@Test
public void test2() throws DocumentException {
// 1. 讀取檔案,在Junit測驗中,相對路徑是從模塊名開始的
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books.xml");
// 2. 通過Document物件獲取根元素
Element rootElement = document.getRootElement();
//System.out.println(rootElement);
// 3. 通過根元素讀取book標簽物件
// element()和elements()都是通過標簽名查找子元素
List<Element> books = rootElement.elements("book");
// 4. 遍歷處理book標簽轉換為Book類
for (Element book:books){
// asXML()把標簽物件轉換為標簽字串
// System.out.println(book.asXML());
// 5. 獲取到了這個標簽
Element nameElement = book.element("name");
// 獲取這個標簽的文本內容
String name = nameElement.getText();
// 或者可以直接獲取標簽里的文本內容
String price = book.elementText("price");
String author = book.elementText("author");
// 獲取屬性值
String sn = book.attributeValue("sn");
// 獲取完成之后就可以生成了,注意價格是double型別的
System.out.println(new Book(sn,name,author,Double.parseDouble(price)));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134853.html
標籤:Java
上一篇:面向物件(類與物件)
