• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

在Java中使用xpath对xml解析

java 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

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 = <mark>本文来源gaodaimacom搞#代%码@网-</mark>"";                //对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);        }             } }

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在Java中使用xpath对xml解析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址