zoukankan      html  css  js  c++  java
  • XML解析--xPath技术

    xPath技术解决了dom4j查询比较深层次结构的节点比较繁琐复杂的问题。主要作用是用于快速获取所需的节点对象。xPath是在dom4j中的,使用时需要导入jaxen-1.1-beta-6.jar。

    xPath常用的方法

    List<Node>  selectNodes("xpath表达式");   查询多个节点对象

    Node selectSingleNode("xpath表达式");  查询一个节点对象

    xPath表达式语法

      /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)

      //     相对路径       表示不分任何层次结构的选择元素。

      *      通配符         表示匹配所有元素

      []      条件           表示选择什么条件下的元素

      @     属性            表示选择属性节点

      and     关系          表示条件的与关系(等价于&&)

      text()    文本           表示选择文本内容

    表达式使用说明案例

    contact.xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <contactList>
     3     <contact id="001">
     4         <name>张三</name>
     5         <age>20</age>
     6         <mobile>15215413777</mobile>
     7         <email>play@126.com</email>
     8         <qq>435345345</qq>
     9     </contact>
    10     <contact id="002">
    11         <name>李四</name>
    12         <age>21</age>
    13         <mobile>15215413888</mobile>
    14         <email>play@126.com</email>
    15         <qq>3234234234</qq>
    16     </contact>
    17 </contactList>

    xPath使用案例

     1 String xpath = "";
     2         
     3         /**
     4          * 1.      /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)
     5          */
     6         xpath = "/contactList";
     7         xpath = "/contactList/contact";
     8         
     9         /**
    10          * 2. //     相对路径       表示不分任何层次结构的选择元素。
    11          */
    12         xpath = "//contact/name";
    13         xpath = "//name";
    14         
    15         /**
    16          * 3. *      通配符         表示匹配所有元素
    17          */
    18         xpath = "/contactList/*"; //根标签contactList下的所有子标签
    19         xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)
    20         
    21         /**
    22          * 4. []      条件           表示选择什么条件下的元素
    23          */
    24         //带有id属性的contact标签
    25         xpath = "//contact[@id]";
    26         //第二个的contact标签
    27         xpath = "//contact[2]";
    28         //选择最后一个contact标签
    29         xpath = "//contact[last()]";
    30         
    31         /**
    32          * 5. @     属性            表示选择属性节点
    33          */
    34         xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
    35         xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
    36         xpath = "//contact[@id='002']";//选择id属性值为002的contact标签
    37         xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签
    38         
    39         /**
    40          *6.  text()   表示选择文本内容
    41          */
    42         //选择name标签下的文本内容,返回Text对象
    43         xpath = "//name/text()";
    44         xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签

    代码示例:

    删除id属性为002的标签,并删除

     1 import java.io.File;
     2 import java.io.FileOutputStream;
     3 
     4 
     5 import org.dom4j.Document;
     6 import org.dom4j.DocumentException;
     7 import org.dom4j.Element;
     8 import org.dom4j.io.OutputFormat;
     9 import org.dom4j.io.SAXReader;
    10 import org.dom4j.io.XMLWriter;
    11 
    12 public class Dom4jTest {
    13 
    14     public static void main(String[] args) throws Exception{
    15         Document doc = new SAXReader().read(new File("./src/contact.xml"));
    16         //使用xPatch查询id为002的记录
    17         Element elem = (Element)doc.selectSingleNode("//contact[@id='002']");
    18         System.out.println(elem);
    19         elem.detach();
    20         FileOutputStream outputStream = new FileOutputStream(new File("/Users/nick/Desktop/nkcontact.xml"));
    21         OutputFormat outputFormat = OutputFormat.createPrettyPrint();
    22         XMLWriter writer = new XMLWriter(outputStream,outputFormat);
    23         writer.write(doc);
    24         writer.close();
    25     }
    26 
    27 }
  • 相关阅读:
    CSS 中z-index全解析(摘自阿里西西)
    Video标签的使用
    HTML标签解释大全
    在html中插入音频
    ABAP更改现有程序
    乱糟糟的笔记
    ABAP提示信息对话框
    【学习】几种查找增强的方法
    【学习】ABAP OLE 对EXCEL的处理
    【转载】ABAP-如何读取内表的字段名称
  • 原文地址:https://www.cnblogs.com/nicker/p/6437481.html
Copyright © 2011-2022 走看看