zoukankan      html  css  js  c++  java
  • XML解析

    xml解析:
        解析方式:
            1.sax:特点:逐行解析,只能查询.
            2.dom:特点:一次性将文档加载到内容中,形成一个dom树.可以对dom树curd操作
        解析技术:
            JAXP:sun公司提供支持DOM和SAX开发包
            JDom:dom4j兄弟
            jsoup:一种处理HTML特定解析开发包
            ★dom4j:比较常用的解析开发包,hibernate底层采用。
    演示用XML代码:
     
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5">
     3      <servlet>
     4           <servlet-name>HelloMyServlet</servlet-name>
     5           <servlet-class>cn.itcase.HelloMyServlet</servlet-class>
     6      </servlet>
     7      <servlet-mapping>
     8           <servlet-name>HelloMyServlet</servlet-name>
     9           <url-pattern>/hello</url-pattern>
    10      </servlet-mapping>
    11 </web-app>
     
        dom4j技术进行查询操作.
            使用步骤:
                1.导入jar包
                2.创建一个核心对象 SAXReader
                    new SAXReader();
                3.将xml文档加载到内存中形成一棵树
                    Document doc=reader.read(文件)
                4.获取根节点
                    Element root=doc.getRootElement();
                5.通过根节点就可以获取其他节点(文本节点,属性节点,元素节点)
                    获取所有的子元素
                        List<Element> list=root.elements()
                    获取元素的指定属性内容
                        String value=root.attributeValue("属性名");
                    获取子标签标签体:遍历list 获取到每一个子元素
                        String text=ele.elementText("子标签名称")
    代码演示:
     
     1     //创建对象
     2           SAXReader saxReader = new SAXReader();
     3           //将xml文档加载到内存当中
     4           Document document = saxReader.read("D:\workspace\mylanqiao\src\day8_26\demo.xml");
     5           //获取根节点
     6           Element root = document.getRootElement();
     7           //通过根节点操作其他节点
     8           List<Element> elements = root.elements();
     9           //操作1:获取所有子元素
    10           for (Element ele : elements) {
    11               //操作2:获取元素的指定属性内容
    12               //操作3:获取标签体,遍历list获取每一个子元素
    13               /*String elementText = ele.elementText("servlet-name");
    14               System.out.println(elementText);
    15               */
    16               //获取另一个标签体
    17                System.out.println(ele.elementText("url-pattern"));
    18               /*
    19                * 第一个标签没有就返回一个空值
    20                * null
    21               /hello*/
    22           }
    23           //获取根节点的属性
    24           System.out.println(root.attributeValue("version"));
          
        xpath解析技术:(扩展)
            依赖于dom4j
                使用步骤:
                    1.导入jar包(dom4j和jaxen-1.1-beta-6.jar)
                    2.加载xml文件到内存中
                    3.使用api
                        selectNode("表达式");
                        selectSingleNode("表达式");
                表达式的写法:
                    / 从根节点选取
                    // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
                    例如一个标签下有一个id属性且有值  id=2;
                        //元素名[@属性名='属性值']
                        //元素名[@id='2']
    代码演示:
             
     1  //加载dom树
     2           Document document = new SAXReader().read("D:\workspace\mylanqiao\src\day8_26\demo.xml");
     3           //获取多个节点
     4 //        List<Element> selectNodes = document.selectNodes("/web-app/servlet/servlet-name");
     5 //        Element ele = selectNodes.get(0);
     6 //        System.out.println(ele.getText());
     7 //
     8           //获取某个节点
     9           Element element = (Element) document.selectSingleNode("//servlet/servlet-name");
    10           //返回值是Node,强转成element,//代表不从根节点开始找
    11           System.out.println(element.getText());
  • 相关阅读:
    【STM32F429】第5章 ThreadX NetXDUO网络协议栈介绍
    【STM32H7】第5章 ThreadX NetXDUO网络协议栈介绍
    【STM32F407】第5章 ThreadX NetXDUO网络协议栈介绍
    【STM32H7】第25章 ThreadX GUIX复选框Checkbox回调事件处理
    【STM32F429】第23章 ThreadX GUIX复选框Checkbox回调事件处理
    【STM32H7】第4章 初学ThreadX NetXDUO准备工作
    【STM32F429】第4章 初学ThreadX NetXDUO准备工作
    【STM32F407】第4章 初学ThreadX NetXDUO准备工作
    【STM32H7】第3章 PHY芯片和STM32的MAC基础知识
    【STM32F429】第3章 PHY芯片和STM32的MAC基础知识
  • 原文地址:https://www.cnblogs.com/anzhi/p/7447454.html
Copyright © 2011-2022 走看看