在Java中使⽤xpath对xml解析
个⼈博客地址:
xpath是⼀门在xml⽂档中查信息的语⾔。xpath⽤于在XML⽂档中通过元素和属性进⾏导航。它的返回值可能是节点,节点集合,⽂本,以及节点和⽂本的混合等。
在学习本⽂档之前应该对XML的节点,元素,属性,⽂本,处理指令,注释,根节点,命名空间以及节点关系有⼀定的了解以及对xpath也有了解。
XML学习地址:
xpath基本语法学习地址:
xpath官⽅⽂档:yunpan/cvc4tEIGy5EvS访问密码 9d16
本⽂主要介绍:Java中使⽤xpath操作对xml操作。
1)⾸先在dom4j中如何使⽤xpath技术
导⼊xPath⽀持的jar包。jaxen-1.1-beta-6.jar(⾸先要先导⼊dom4j包,dom4j下载地址:www.dom4
导包之后如图所⽰:
如果不知道怎样导包请参考我以前的⼀篇博客:
2)在Java中使⽤xpath⽅法,主要有两点:
List<Node> selectNodes("xpath表达式"); 查询多个节点对象
Node selectSingleNode("xpath表达式"); 查询⼀个节点对象
下⾯就⽤实例说明使⽤⽅法。
⼀、selectNodes使⽤⽅法:
1package com.vastsum.demo;
2
3import java.io.File;
4import java.io.FileOutputStream;
5import java.util.List;
6
7import org.dom4j.Document;
8import org.dom4j.Element;
9import org.dom4j.Node;
10import org.dom4j.io.OutputFormat;
11import org.dom4j.io.SAXReader;
12import org.dom4j.io.XMLWriter;
13
14/**
15 *
16 * @author shutu008
17 *selectNode的使⽤⽅法
18*/
19public class xpathDemo {
20
21public static void main(String[] args) throws Exception {
22
23    Document doc = new SAXReader().read(new File("./l"));
24
25/**
26        * @param xpath 表⽰xpath语法变量
27*/
28    String xpath="";
29
30/**
31        * 1.      /      绝对路径表⽰从xml的根位置开始或⼦元素(⼀个层次结构)
32*/
33        xpath = "/contactList";
34        xpath = "/contactList/contact";
35
36/**
37        * 2. //    相对路径表⽰不分任何层次结构的选择元素。
38*/
39        xpath = "//contact/name";
40        xpath = "//name";
41
42/**
43        * 3. *      通配符表⽰匹配所有元素
44*/
45        xpath = "/contactList/*"; //根标签contactList下的所有⼦标签
46        xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)
47
48/**
49        * 4. []      条件表⽰选择什么条件下的元素
50*/
51//带有id属性的contact标签
52        xpath = "//contact[@id]";
53//第⼆个的contact标签
54        xpath = "//contact[2]";
55//选择最后⼀个contact标签
56        xpath = "//contact[last()]";
57
58/**
59        * 5. @    属性表⽰选择属性节点
60*/
61        xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
62        xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
63        xpath = "//contact[@id='002']";//选择id属性值为002的contact标签
64        xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签65
66/**
67        *6.  text()  表⽰选择⽂本内容
68*/
69//选择name标签下的⽂本内容,返回Text对象
70        xpath = "//name/text()";
71        xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签
72
73
74        List<Node> list = doc.selectNodes(xpath);
75for (Node node : list) {
76            System.out.println(node);
77        }
78
79//写出xml⽂件
80//输出位置
81        FileOutputStream out = new FileOutputStream("d:/l");
82
83//指定格式
84        OutputFormat format = atePrettyPrint();
85        format.setEncoding("utf-8");
86        XMLWriter writer = new XMLWriter(out,format);
87
88//写出内容
89        writer.write(doc);
90
91//关闭资源
92        writer.close();
93
94    }
95
96
97 }
⼆、selectSingleNode的使⽤⽅法
1package com.vastsum.demo;
2
3import java.io.File;
4import java.util.Iterator;
5
6import org.dom4j.Attribute;
7import org.dom4j.Document;
8import org.dom4j.Element;
9import org.dom4j.io.SAXReader;
10
11/**
12 *
13 * @author shutu008
14 *selectSingleNode的使⽤
15*/
16public class xpathDemo1{
17public static void main(String[] args) throws Exception{
18//读取XML⽂件,获得document对象
19        SAXReader saxReader = new SAXReader();
20        Document doc = ad(new File("./l")); 21
22//使⽤xpath获取某个节点
23        String xpath = "";
24
25//对contact元素 id="001"的节点,操作
26        xpath = "//contact[@id = '001']";
27        Element contactElem =    (Element)doc.selectSingleNode(xpath); 28
29//设置这个节点的属性值
30        contactElem.addAttribute("name", "001");
31
32//输出这个节点的所有属性值
33for(Iterator it = contactElem.attributeIterator();it.hasNext();){
34        Attribute conAttr = (();
35        String conTxt = Value();
36        String conAttrName = Name();
37        System.out.println(conAttrName+" = "+conTxt);
38        }
39
40      }
41  }
java xml是什么备注:以下是操作的xml⽂件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <contactList id="0">
3    <contact id="001" class="style" name="lisi">
4        <name>张三</name>
5        <age>20</age>
6        <phone>134222223333</phone>
7        <email>zhangsan@qq</email>
8        <qq>432221111</qq>
9    </contact>
10    <contact id="002">
11        <name>李四</name>
12        <age>20</age>
13        <phone>134222225555</phone>
14        <email>lisi@qq</email>
15        <qq>432222222</qq>
16    </contact>
17    <contactTwo>
18        <name>王五</name>
19        <age>32</age>
20        <phone>465431341</phone>
21        <emali>af@qq</emali>
22        <qq>46164694</qq>
23    </contactTwo>
24    <test>测试</test>
25    <test>其他⽤途</test>
26 </contactList>
View Code

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。