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"));}}

    推荐阅读