xml檔案

笨蛋悠米發表於2020-09-28

XML

什麼是xml?

xml是可擴充套件的標記性語言

xml的作用?

xml 的主要作用有:
1、用來儲存資料,而且這些資料具有自我描述性
2、它還可以做為專案或者模組的配置檔案
3、還可以做為網路傳輸資料的格式(現在 JSON 為主)。

xml語法

  1. 文件宣告。
  2. 元素(標籤)
  3. xml 屬性
  4. xml 註釋
  5. 文字區域(CDATA 區)
文件宣告:

新建一個xml檔案,在頭部宣告。

<?xml version="1.0" encoding="UTF-8" ?>
<!--vesion是xml的版本,encoding表示xml檔案的編碼-->
<?xml version="1.0" encoding="UTF-8" ?>
<!--vesion是xml的版本,encoding表示xml檔案的編碼-->
<books>
    <book sn="圖書編號1">
        <name>a</name>
<!--        &lt是小於號的轉義,&gt是大於號的轉義-->
<!--        <author>&lt;aa&gt;</author> -->
        <author>
<!--            CDATA告訴xml檔案這裡面是文字就不會解析括號-->
            <![CDATA[<aa>]]>
        </author>
        <price>aaa</price>
    </book>
    <book sn="圖書編號2">
        <name>b</name>
        <author>bb</author>
        <price>bbb</price>
    </book>
</books>
xml介紹和獲取

attribute是屬性,比如上面的sn就是屬性,為元素提供額外的資訊
最底層的元素叫根元素

獲取xml檔案中的內容

  1. 匯入一個叫dom4j的jar包,dom4j就是專門用來處理xml檔案的包。
  2. 讀取books.xml(建立一個saxreader輸入流,去讀取xml檔案,生成doucument物件)
  3. 通過Document物件獲取根元素
  4. 通過根元素獲取book標籤物件
  5. 遍歷,處理每個book書籤轉換成book類

裡面的一些方法:
①Document物件獲取根元素:.getRootElement()
②根元素獲取子元素:.element(獲取一個子元素,要給定名字) / .elements(獲取多個子元素,可以給定名字也可以不給)
③子元素的操作:
.element():繼續獲取子元素
.getText():可以獲取標籤中的文字內容
.elementText(指定標籤名):直接獲取指定標籤名的文字內容
.attributeValue(指定屬性名):獲取指定屬性名的內容
.asXML():把標籤物件,轉換為標籤字串

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

/**
 * @Author: yyyzl
 * @Date: 2020/9/28
 **/
public class Dom4j {
    @Test
    public void test1() throws DocumentException {
        //建立一個saxreader輸入流,去讀取xml檔案,生成doucument物件
        SAXReader saxReader=new SAXReader();
        Document read = saxReader.read("src/book/books.xml");
        System.out.println(read);
    }

    @Test
    public void Test2() throws DocumentException {
        //1 讀取books.xml
        SAXReader reader=new SAXReader();
        //在Junit測試中,相對路徑是從模組名開始算
        Document document = reader.read("src/book/books.xml");
        //2 通過Document物件獲取根元素
        Element rootElement = document.getRootElement();
//        System.out.println(rootElement.getName());
        //3 通過根元素獲取book標籤物件
        List<Element> elements = rootElement.elements("book");
        //4 遍歷,處理每個book書籤轉換成book類
        for(Element e:elements){
            //asXML() 把標籤物件,轉換為標籤字串
            //element:取到指定名字的element
            Element name = e.element("name");
            //getText():可以獲取標籤中的文字內容
            String text = name.getText();
            //直接獲取指定標籤名的文字內容
            String price = e.elementText("price");
            //獲取標籤上的屬性值
            String  snvalue=e.attributeValue("sn");
            
            System.out.println(e.asXML());  //把xml整個輸出
            System.out.println(name.asXML()); //<name>a</name>
            System.out.println(text);     //a
            System.out.println(price);	  //aaa
            System.out.println(snvalue);  //圖書編號1
        }
    }
}

相關文章