• XML:XML的解析


    1 导入JAR包

    2 API介绍

      使用核心类SaxReader加载xml文档获得Document,通过Document 对象获得文档的根元素,然后就可以操作了

      常用API如下: 

        1. SaxReader对象 

            read(…) 加载执行xml文档

        2. Document对象

            getRootElement() 获得根元素 

        3. Element对象 

            elements(…) 获得指定名称的所有子元素。(可以不指定名称)

            element(…) 获得指定名称的第一个子元素。(可以不指定名称)

            getName() 获得当前元素的元素名 

            attributeValue(…) 获得指定属性名的属性值 

            elementText(…) 获得指定名称子元素的文本值 

            getText() 获得当前元素的文本内容 

     

    3 准备xml文件

    编写user.xsd schema约束

    <?xml version="1.0" encoding="UTF-8" ?>
    <xsd:schema xmlns="http://www.lagou.com/xml"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.lagou.com/xml" elementFormDefault="qualified">

      <xsd:element name="users" type="usersType"/>   <xsd:complexType name="usersType">     <xsd:sequence>       <xsd:element name="user" type="userType" minOccurs="0" maxOccurs="unbounded"/>     </xsd:sequence>   </xsd:complexType>

      <xsd:complexType name="userType">     <xsd:sequence>       <xsd:element name="name" type="xsd:string"/>       <xsd:element name="age" type="ageType" />       <xsd:element name="hobby" type="hobbyType" />     </xsd:sequence>     <xsd:attribute name="id" type="numberType" use="required"/>   </xsd:complexType>

    <xsd:simpleType name="ageType"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="hobbyType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="抽烟"/> <xsd:enumeration value="喝酒"/> <xsd:enumeration value="烫头"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="numberType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="d"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>

    编写user.xml 引入约束

    <?xml version="1.0" encoding="UTF-8" ?>
    <users
    xmlns="http://www.lagou.com/xml"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.lagou.com/xml user.xsd"
    >
    <user id="1">
    <name>张百万</name>
    <age>20</age>
    <hobby>抽烟</hobby>
    </user>
    <user id="2">
    <name>于谦</name>
    <age>50</age>
    <hobby>喝酒</hobby>
    </user>
    <user id="3">
    <name>刘能</name>
    <age>40</age>
    <hobby>烫头</hobby>
    </user>
    </users>

    读取XML

    public class TestDOM4j {
    //获取XML文件中的 所有的元素名称(标签)
    @Test
    public void test1() throws DocumentException {
    //1.获取XML解析对象
    SAXReader reader = new SAXReader();
    //2.解析XML 获取 文档对象 document
    Document document =
    reader.read("H:\jdbc_work\xml_task03\src\com\lagou\xml03\user.xml");
    //3.获取根元素
    Element rootElement = document.getRootElement();
    //获取根元素名称
    System.out.println(rootElement.getName());
    //获取 根元素下的标签
    List<Element> elements = rootElement.elements();
    for (Element element : elements) {
    System.out.println("根标签下的子节点: " + element.getName());
    List<Element> eList = element.elements();
    for (Element e : eList) {
    System.out.println("user标签下的子节点" + e.getName());
    }
    break;
    }
    }
    /**
    * 获取具体的节点内容 获取张百万的所有信息
    */
    @Test
    public void test2() throws DocumentException {
    //1.创建XML文档解析对象
    SAXReader sr = new SAXReader();
    //2.读取XML获取到document对象
    Document document = sr.read("src\com\lagou\xml02\user.xml");
    //3.获取根节点
    Element rootElement = document.getRootElement();
    //4.得到当前节点的 所有子节点
    List<Element> elements = rootElement.elements();
    //5.获取第一个子节点
    Element user = elements.get(0);
    //6.获取所有信息
    String id = user.attributeValue("id");
    String name = user.elementText("name");
    String age = user.elementText("age");
    //使用getText获取当前元素的文本内容
    String hobby = user.element("hobby").getText();
    //打印
    System.out.println(id+" " + name +" " + age +" " + hobby);
    }
    }
  • 相关阅读:
    在vue-cli中使用mock.js详解
    canvas水波纹效果
    echarts颜色渐变
    前端单词大全
    vue.js商城购买选择界面
    网站炫酷效果
    vue-cli中路由配置新写法
    Render函数
    XHTML与HTML的区别
    iview的table中点击Icon弹Poptip,render函数的写法
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/15066533.html
Copyright © 2020-2023  润新知