day08-XML( 三 )


文章插圖

  • 在src文件下創建Dom4j_類以及students.xml文件
  • students.xml:
    <?xml version="1.0" encoding="UTF-8" ?><students><student id="01"><name>小龍女</name><gender>女</gender><age>16</age><resume>古墓派掌門人</resume></student><student id="02"><name>歐陽鋒</name><gender>男</gender><age>18</age><resume>白駝山弟子</resume></student></students>Dom4j_.java:
    import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;import org.testng.annotations.Test;import java.io.File;public class Dom4j_ {/*** 演示如何加載xml文件*/@Testpublic void loadXML() throws DocumentException {//得到一個解析器SAXReader reader = new SAXReader();//debug-->看看document對象的屬性Document document = reader.read(new File("src/students.xml"));System.out.println(document);}}
    1. 如下:在Document document=reader.read(new File("src/students.xml"));處打上斷點:
      day08-XML

      文章插圖
    2. 點擊debug,點擊step over,可以看到document對象,它代表整個文檔 。
      展開document對象,rootElement代表的就是students根元素
      day08-XML

      文章插圖
    3. rootElement下面有一個content屬性,content屬性存儲著所有的elementData
      day08-XML

      文章插圖
    4. 點擊elementData屬性 , 可以看到該屬性有5個對象:
      day08-XML

      文章插圖
      和html-dom解析一樣,這五個對象中有三個是換行符號\n,其余的兩個才是根元素下面的子元素student
    5. 點擊展開索引為1的元素對象(即student元素),可以看到該元素對象中又包含了9個對象,除了換行符之外,其余的對象就是student元素的子元素,name節點,gender節點 , age節點和resume節點
      day08-XML

      文章插圖

      day08-XML

      文章插圖
      day08-XML

      文章插圖
    6. 點擊name節點,展開 , 即可看到name節點的值
      day08-XML

      文章插圖
    document對象的整體結構為:
    day08-XML

    文章插圖
    1.方式一遍歷
    演示案例1:遍歷xml指定元素
    import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.testng.annotations.Test;import java.io.File;import java.util.List;public class Dom4j_ {/*** 遍歷所有的student信息*/@Testpublic void listStus() throws DocumentException {//得到一個解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/students.xml"));//1.得到rootElementElement rootElement = document.getRootElement();//2.得到rootElement的student節點List<Element> students = rootElement.elements("student");System.out.println(students.size());//2for (Element student : students) {//student就是student節點/元素//獲取student節點的name節點Element name = student.element("name");//因為name只有一個,這里用element方法Element age = student.element("age");Element gender = student.element("gender");Element resume = student.element("resume");System.out.println("學生信息=" + name.getText() + " " +age.getText() + " " + gender.getText() + " " + resume.getText());}}}
    day08-XML

    文章插圖
    2.方式一查詢
    案例2:讀取指定xml元素
    import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.testng.annotations.Test;import java.io.File;public class Dom4j_ {/*** 指定讀取第一個學生的信息*/@Testpublic void readOne() throws DocumentException {//得到一個解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/students.xml"));//1.得到rootElementElement rootElement = document.getRootElement();//2.獲取第一個學生Element student = (Element) rootElement.elements("student").get(0);//3.輸出該學生的信息System.out.println("學生信息=" +student.element("name").getText() + " " +student.element("age").getText() + " " +student.element("gender").getText() + " " +student.element("resume").getText());//4.獲取student元素的屬性System.out.println("id="+student.attributeValue("id"));}}

    推薦閱讀