1. 程式人生 > >xml學習筆記

xml學習筆記

  1. xml文件規範
<?xml version="1.0" encoding="utf-8" ?>  

ANSI為計算機預設編碼,一般為gbk,通常xml使用utf-8編碼 2. xml標籤 xml標籤成對出現,可自定義標籤,標籤可巢狀 空標籤:既是開始標籤,也是結束標籤 這裡寫圖片描述 3. 屬性的定義與註釋 這裡寫圖片描述 <!-- 這裡是註釋 --!> 4. cdata(一般少見) 嚴格地講,在 XML 中僅有字元 “<”和”&” 是非法的。省略號、引號和大於號是合法的

< &lt;
& &amp;
  1. xml解析 一般只用這兩種解析方式 Dom Sax 這裡寫圖片描述
    解析手段 jaxp sun公司。 比較繁瑣 jdom dom4j 使用比較廣泛
  2. Dom4j 基本用法 element.element(“stu”) : 返回該元素下的第一個stu元素 element.elements(); 返回該元素下的所有子元素。

    1. 建立SaxReader物件

    2. 指定解析的xml

    3. 獲取根元素。

    4. 根據根元素獲取子元素或者下面的子孫元素

        try {
            //1. 建立sax讀取物件
            SAXReader reader = new SAXReader(); //jdbc -- classloader
//2. 指定解析的xml源 Document document = reader.read(new File("src/xml/stus.xml")); //3. 得到元素、 //得到根元素 Element rootElement= document.getRootElement(); //獲取根元素下面的子元素 age //rootElement.element("age") //System.out.println(rootElement.element("stu").element("age").getText());
//獲取根元素下面的所有子元素 。 stu元素 List<Element> elements = rootElement.elements(); //遍歷所有的stu元素 for (Element element : elements) { //獲取stu元素下面的name元素 String name = element.element("name").getText(); String age = element.element("age").getText(); String address = element.element("address").getText(); System.out.println("name="+name+"==age+"+age+"==address="+address); } } catch (Exception e) { e.printStackTrace(); }
  1. Dom4j 的 Xpath使用

dom4j裡面支援Xpath的寫法。 xpath其實是xml的路徑語言,支援我們在解析xml的時候,能夠快速的定位到具體的某一個元素。

  1. 新增jar包依賴(百度網盤有檔案)

  2. 在查詢指定節點的時候,根據XPath語法規則來查詢

  3. 後續的程式碼與以前的解析程式碼一樣。  
    //要想使用Xpath, 還得新增支援的jar 獲取的是第一個 只返回一個。
    Element nameElement = (Element) rootElement.selectSingleNode("//name");
    System.out.println(nameElement.getText());
  System.out.println("----------------");
//獲取文件裡面的所有name元素
    List<Element> list = rootElement.selectNodes("//name");
    for (Element element : list) {
    System.out.println(element.getText());
    }
  1. xml約束 (瞭解) dtd 語法自成一派, 早起就出現的。 可讀性比較差。 Schema 其實就是一個xml , 使用xml的語法規則, xml解析器解析起來比較方便 , 是為了替代DTD 。但是Schema 約束文字內容比DTD的內容還要多。 所以目前也沒有真正意義上的替代DTD 更多內容去百度網盤下載https://pan.baidu.com/s/1Ms9RHGf8xYdSQyTgXziBDA 密碼:zy45