您好,欢迎访问一九零五行业门户网

在Java中使用xpath对xml解析

xpath是一门在xml文档中查找信息的语言。xpath用于在xml文档中通过元素和属性进行导航。它的返回值可能是节点,节点集合,文本,以及节点和文本的混合等。
在学习本文档之前应该对xml的节点,元素,属性,文本,处理指令,注释,根节点,命名空间以及节点关系有一定的了解以及对xpath也有了解。
xml学习地址:http://www.runoob.com/xml/xml-tutorial.html
xpath基本语法学习地址:http://www.runoob.com/xpath/xpath-tutorial.html
xpath官方文档:https://yunpan.cn/cvc4teigy5evs 访问密码 9d16
本文主要介绍:java中使用xpath操作对xml操作。
1)首先在dom4j中如何使用xpath技术
导入xpath支持的jar包。jaxen-1.1-beta-6.jar(首先要先导入dom4j包,dom4j下载地址:http://www.dom4j.org/dom4j-1.6.1/)。
导包之后如图所示:
如果不知道怎样导包请参考我以前的一篇博客:java获取xml节点总结之读取xml文档节点
2)在java中使用xpath方法,主要有两点:
list selectnodes(xpath表达式); 查询多个节点对象
node selectsinglenode(xpath表达式); 查询一个节点对象
下面就用实例说明使用方法。
一、selectnodes使用方法:
package com.vastsum.demo; import java.io.file; import java.io.fileoutputstream; import java.util.list; import org.dom4j.document; import org.dom4j.element; import org.dom4j.node; import org.dom4j.io.outputformat; import org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter; /** * * @author shutu008 *selectnode的使用方法 */ public class xpathdemo { public static void main(string[] args) throws exception { document doc = new saxreader().read(new file(./src/contact.xml)); /** * @param xpath 表示xpath语法变量 */ string xpath=; /** * 1. / 绝对路径 表示从xml的根位置开始或子元素(一个层次结构) */ xpath = /contactlist; xpath = /contactlist/contact; /** * 2. // 相对路径 表示不分任何层次结构的选择元素。 */ xpath = //contact/name; xpath = //name; /** * 3. * 通配符 表示匹配所有元素 */ xpath = /contactlist/*; //根标签contactlist下的所有子标签 xpath = /contactlist//*;//根标签contactlist下的所有标签(不分层次结构) /** * 4. [] 条件 表示选择什么条件下的元素 */ //带有id属性的contact标签 xpath = //contact[@id]; //第二个的contact标签 xpath = //contact[2]; //选择最后一个contact标签 xpath = //contact[last()]; /** * 5. @ 属性 表示选择属性节点 */ xpath = //@id; //选择id属性节点对象,返回的是attribute对象 xpath = //contact[not(@id)];//选择不包含id属性的contact标签节点 xpath = //contact[@id='002'];//选择id属性值为002的contact标签 xpath = //contact[@id='001' and @name='eric'];//选择id属性值为001,且name属性为eric的contact标签 /** *6. text() 表示选择文本内容 */ //选择name标签下的文本内容,返回text对象 xpath = //name/text(); xpath = //contact/name[text()='张三'];//选择姓名为张三的name标签 list list = doc.selectnodes(xpath); for (node node : list) { system.out.println(node); } //写出xml文件 //输出位置 fileoutputstream out = new fileoutputstream(d:/contact.xml); //指定格式 outputformat format = outputformat.createprettyprint(); format.setencoding(utf-8); xmlwriter writer = new xmlwriter(out,format); //写出内容 writer.write(doc); //关闭资源 writer.close(); } }
二、selectsinglenode的使用方法
package com.vastsum.demo; import java.io.file; import java.util.iterator; import org.dom4j.attribute; import org.dom4j.document; import org.dom4j.element; import org.dom4j.io.saxreader; /** * * @author shutu008 *selectsinglenode的使用 */ public class xpathdemo1{ public static void main(string[] args) throws exception{ //读取xml文件,获得document对象 saxreader saxreader = new saxreader(); document doc = saxreader.read(new file(./src/contact.xml)); //使用xpath获取某个节点 string xpath = ; //对contact元素 id=001的节点,操作 xpath = //contact[@id = '001']; element contactelem = (element)doc.selectsinglenode(xpath); //设置这个节点的属性值 contactelem.addattribute(name, 001); //输出这个节点的所有属性值 for(iterator it = contactelem.attributeiterator();it.hasnext();){ attribute conattr = (attribute)it.next(); string contxt = conattr.getvalue(); string conattrname = conattr.getname(); system.out.println(conattrname+ = +contxt); } } }
其它类似信息

推荐信息