你的位置:首页 > Java教程

[Java教程]在Java中使用xpath对xml解析


xpath是一门在在学习本文档之前应该对http://www.runoob.com/
xpath基本语法学习地址:http://www.runoob.com/xpath/xpath-tutorial.html
xpath官方文档:https://yunpan.cn/cvc4tEIGy5EvS 访问密码 9d16
本文主要介绍:Java中使用xpath操作对1)首先在dom4j中如何使用xpath技术
导入xPath支持的jar包。jaxen-1.1-beta-6.jar(首先要先导入dom4j包,dom4j下载地址:http://www.dom4j.org/dom4j-1.6.1/)。

导包之后如图所示:

如果不知道怎样导包请参考我以前的一篇博客:Java获取
2)在Java中使用xpath方法,主要有两点:
List<Node> selectNodes("xpath表达式"); 查询多个节点对象
Node selectSingleNode("xpath表达式"); 查询一个节点对象
下面就用实例说明使用方法。

一、selectNodes使用方法:

 1 package com.vastsum.demo; 2  3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.util.List; 6  7 import org.dom4j.Document; 8 import org.dom4j.Element; 9 import org.dom4j.Node;10 import org.dom4j.io.OutputFormat;11 import org.dom4j.io.SAXReader;12 import org.dom4j.io.13 14 /**15  * 16  * @author shutu00817  *selectNode的使用方法18 */19 public class xpathDemo {20 21   public static void main(String[] args) throws Exception {22 23   Document doc = new SAXReader().read(new File("./src/contact.));24     25     /**26      * @param xpath 表示xpath语法变量27     */28   String xpath="";29     30     /**31      * 1.   /   绝对路径   表示从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);75     for (Node node : list) {76       System.out.println(node);77     }78   79     //写出80     //输出位置81     FileOutputStream out = new FileOutputStream("d:/contact.);82     83     //指定格式84     OutputFormat format = OutputFormat.createPrettyPrint();85     format.setEncoding("utf-8");86     new 87     88     //写出内容89     writer.write(doc);90     91     //关闭资源92     writer.close();93     94   }95   96 97 }

二、selectSingleNode的使用方法

 1 package com.vastsum.demo; 2  3 import java.io.File; 4 import java.util.Iterator; 5  6 import org.dom4j.Attribute; 7 import org.dom4j.Document; 8 import org.dom4j.Element; 9 import org.dom4j.io.SAXReader;10 11 /**12  * 13  * @author shutu00814  *selectSingleNode的使用15 */16 public class xpathDemo1{17   public static void main(String[] args) throws Exception{18     //读取19     SAXReader saxReader = new SAXReader();  20     Document doc = saxReader.read(new File("./src/contact.));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     //输出这个节点的所有属性值33     for(Iterator it = contactElem.attributeIterator();it.hasNext();){34     Attribute conAttr = (Attribute)it.next();35     String conTxt = conAttr.getValue();36     String conAttrName = conAttr.getName();37     System.out.println(conAttrName+" = "+conTxt);38     }39     40    }41 }

 备注:以下是操作的

 1 <? 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.com</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.com</email>15     <qq>432222222</qq>16   </contact>17   <contactTwo>18     <name>王五</name>19     <age>32</age>20     <phone>465431341</phone>21     <emali>af@qq.com</emali>22     <qq>46164694</qq>23   </contactTwo>24   <test>测试</test>25   <test>其他用途</test>26 </contactList>

View Code

 




深圳旅游攻略自由行深圳旅游景点排行榜深圳旅游哪里好玩呢深圳免费旅游景点大全深圳市周边旅游景点舌尖上的吴江 同里古镇品味江南 揭阳望天湖风景区停车方便吗?望天湖停车收费吗? 揭阳望天湖风景区有酒店吗?望天湖酒店条件怎么样? 深度揭秘电影《狼图腾》中16只狼的故事 七娘山野炊山庄门票2015-10-12月深圳七娘山野炊山庄门票价格 七娘山野炊山庄怎么走?深圳七娘山野炊山庄门票多少钱? 七娘山野炊山庄地址?深圳七娘山野炊山庄在哪里? 七娘山野炊山庄好玩吗?深圳七娘山野炊山庄怎么样? 恩平牛江名人山庄门票价格?牛江名人山庄攻略? 恩平牛江名人山庄好玩吗?牛江名人山庄有什么玩的? “中国瀑乡 秀美安顺” 推荐会在深举行 河东名人山庄团购价格?恩平河东名人山庄门票团购优惠吗? 惠州小桂湾骑自行车好玩吗?小桂湾骑自行车多少钱? 国内赏月去哪里好 蜈支洲岛住宿攻略?三亚蜈支洲岛酒店多少钱一晚? 国内有哪些人少景美的旅游景点? Q65110A8262 Datasheet Q65110A8262 Datasheet Q65110A8266 Datasheet Q65110A8266 Datasheet Q65110A8280 Datasheet Q65110A8280 Datasheet 迪拜帆船酒店价格 迪拜帆船酒店价格 迪拜帆船酒店价格 香港海港城营业时间 香港海港城营业时间 香港海港城营业时间 深圳梧桐山攻略 深圳梧桐山攻略 深圳梧桐山攻略