xPath用法
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,下面是一小示例,需要的朋友可以参考下
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。
XPathTest.java
package com.hongyuan.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class XPathTest { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException { // 解析文件,生成document对象 DocumentBuilder builder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); Document document = builder.parse( new File( "bookstore.xml" )); // 生成XPath对象 XPath xpath = XPathFactory.newInstance().newXPath(); // 获取节点值 String webTitle = (String) xpath.evaluate( "/bookstore/book[@category='WEB']/title/text()" , document, XPathConstants.STRING); System.out.println(webTitle); System.out.println( "===========================================================" ); // 获取节点属性值 String webTitleLang = (String) xpath.evaluate( "/bookstore/book[@category='WEB']/title/@lang" , document, XPathConstants.STRING); System.out.println(webTitleLang); System.out.println( "===========================================================" ); // 获取节点对象 Node bookWeb = (Node) xpath.evaluate( "/bookstore/book[@category='WEB']" , document, XPathConstants.NODE); System.out.println(bookWeb.getNodeName()); System.out.println( "===========================================================" ); // 获取节点集合 NodeList books = (NodeList) xpath.evaluate( "/bookstore/book" , document, XPathConstants.NODESET); for ( int i = 0 ; i < books.getLength(); i++) { Node book = books.item(i); System.out.println(xpath.evaluate( "@category" , book, XPathConstants.STRING)); } System.out.println( "===========================================================" ); } } bookstore.xml 复制代码代码如下: <?xml version= "1.0" encoding= "utf-8" ?> <bookstore> <book category= "COOKING" > <title lang= "en" >Everyday Italian</title> <author>Giada De Laurentiis</author> <year> 2005 </year> <price> 30.00 </price> </book> <book category= "CHILDREN" > <title lang= "en" >Harry Potter</title> <author>J K. Rowling</author> <year> 2005 </year> <price> 29.99 </price> </book> <book category= "WEB" > <title lang= "en" >Learning XML</title> <author>Erik T. Ray</author> <year> 2003 </year> <price> 39.95 </price> </book> </bookstore> |
InputStream inputStream = new ByteArrayInputStream(responseXML.trim().getBytes("UTF-8")); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(inputStream); XPath xpath = XPathFactory.newInstance().newXPath(); setResponseCode((xpath.evaluate("/InterBOSS/SvcCont/AdditionRsp/Status", doc))); String ordNum = (xpath.evaluate("/InterBOSS/SvcCont/AdditionRsp/OperSeqList/OperSeq", doc)); setResponseContent((xpath.evaluate("/InterBOSS/SvcCont/AdditionRsp/ErrDesc", doc)));
运行效果
posted on 2015-08-28 10:54 nevergiveupzeng 阅读(1680) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人