(七)使用XPath对象查询xml文档

XPath,一种为查询 XML 文档而设计的查询语言。XPath 并不是 Java 语言,事实上 XPath 不是一种完整的编程语言。有很多东西用 XPath 表达不出来,甚至有些查询也无法表达。幸运的是,可以把 XPath 结合到 Java 程序中,这样就能发挥两者的优势了:Java 做 Java 所擅长的,XPath 做 XPath 所擅长的。Java 程序执行 XPath 查询所需要的应用程序编程接口(API)还因形形色色的 XPath 引擎而各不相同。Xalan 有一种 API,Saxon 使用另一种,其他引擎则使用其他的 API。Java 5 推出了 javax.xml.xpath 包,提供一个引擎和对象模型独立的 XPath 库。

在 Java 中计算 XPath 表达式时,第二个参数指定需要的返回类型。有五种可能,都在javax.xml.xpath.XPathConstants 类中命名了常量:

  • XPathConstants.NODESET
  • XPathConstants.BOOLEAN
  • XPathConstants.NUMBER
  • XPathConstants.STRING
  • XPathConstants.NODE

测试代码:

 1 public class XPathTest {
 2     /**
 3      * 使用不带命名空间的XPath查询
 4      * @throws Exception
 5      */
 6     @Test
 7     public void testRetrieveOndNode() throws Exception{
 8         //获得xml文档的内存模型
 9         DocumentBuilder builder = DocumentBuilderFactory
10         .newInstance().newDocumentBuilder();
11         Document document = builder.parse(new File("src/main/resource/books.xml"));
12         //创建XPathFactory对象
13         XPathFactory xPathFactory = XPathFactory.newInstance();
14         //获得XPath对象
15         XPath xPath = xPathFactory.newXPath();
16         //创建XPath表达式对象
17         XPathExpression nodeExpr = xPath.compile("//book[1]");
18         //执行XPath表达式,因为该表达式只能获得一个节点,所以用XPathConstants.NODE
19         Element element = (Element) nodeExpr.evaluate(document, XPathConstants.NODE);
20         NodeList nodes = element.getChildNodes();
21         for(int i=0;i<nodes.getLength();i++){
22             Node node = nodes.item(i);
23             //获得节点类型
24             short nodeType = node.getNodeType();
25             if(nodeType==Node.ELEMENT_NODE){
26                 //获得节点文本,getNodeValue()无法获得节点的文本
27                 String text=node.getTextContent();
28                 System.out.println(node.getNodeName()+"--"+text);
29             }
30         }
31     }
32 }

转载于:https://www.cnblogs.com/techlogy/p/5965125.html

XML编程总结(七)——使用XPath对象查询xml文档相关推荐

  1. 使用 Visual C# .NET 通过 XPath 表达式查询 XML

    本文演示如何使用 XPathNavigator 类通过 XML 路径语言 (XPath) 表达式查询 XPathDocument 对象.XPath 用于以编程方式计算表达式并选择文档中的特定节点. 回 ...

  2. Whois查询接口文档

    Whois查询接口文档 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名 ...

  3. es内嵌文档查询_ElasticSearch 文档的增删改查都不会?

    本文主要是介绍 ElasticSearch 的文档增删改查和批量操作,同时会介绍一些 REST API 返回状态码的具体含义. 我们先来看下这个表: 这个表包含了 Index.Create.Read. ...

  4. 基于Java毕业设计智友少儿编程学习平台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计智友少儿编程学习平台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计智友少儿编程学习平台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S ...

  5. java excel 插入文件_Java 添加OLE对象到Excel文档

    本文介绍通过Java程序添加OLE对象到Excel文档.OLE分为两种形式,一种通过嵌入(Embed),方式,一种通过链接(Link)方式.前者是将对象嵌入到文档中,外部对该对象的更改不影响嵌入操作时 ...

  6. 搜索引擎的检索模型-查询与文档的相关度计算

    1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况 ...

  7. 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度

    一个基于特征向量的近似网页去重算法--term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度 摘  要  在搜索引擎的检索结果页面中,用户经常会得到内容相 ...

  8. java access ole word,利用OLE对象实现Word文档操作

    Word 是常用的字处理软件,在编程中充分利用现有的Word 文档就可以减少很多数据的处理.详细介绍了在ASP.NET 的程序中,利用数据库中的OLE 对象,实现Word文档的在线存取及预览. 1.引 ...

  9. 什么是document对象?如何获取文档对象上的元素?_dom对象

    DOM对象 1. DOM树 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),通过 HTML DOM对象,可访问 JavaScript HTML 文档的所有 ...

最新文章

  1. 从农场女孩到首位图灵奖女性获得者,回顾法兰西斯·艾伦的辉煌一生
  2. python的编程模式-Python 编程,应该养成哪些好的习惯?
  3. python 统计文件夹各类格式文件数量, 具通用性
  4. js php调用webservice,js跨域调用WebService的使用方法
  5. OpenGL绘制二个不同颜色的三角形的实例
  6. 查询程序崩溃日志_PC 崩溃报告途径 amp; 临时解决方法
  7. python Web 之基石 - - CGI 编程 (基于python3)
  8. 基于深度残差网络的番茄叶片病害识别方法
  9. matlab连续投影算法SPA使用示例
  10. java 水仙花数问题(java50道经典编程题)
  11. tgp dnf服务器文件在哪,DNFTGP补丁使用说明及问题解决方案
  12. snownlp抛出错误_9snowNLP常见用法
  13. css 实现一个尖角_css实现气泡的小尖角效果
  14. 【干货】针对DNN的神经网络中上下文相关处理的连续学习概述
  15. 佳能无线打印机服务器,佳能LBP6018W打印机WIFI无线打印心得分享
  16. 4K智能AI双目自动跟踪云台摄像机
  17. 苹果手机怎么在照片上添加文字_要给照片快速添加文字、图框、印章,用这款手机软件比较方便...
  18. Unity Shader入门精要第四章:学习Shader 所需的数学基础--坐标空间
  19. tmail邮箱服务器,邮件服务器(一)Sendmail服务器1
  20. 人机大战?——带你玩转三子棋(C语言)

热门文章

  1. 有哪些在朋友圈发会被秒赞的文案?
  2. 我朋友坚持只肯以银行卡转账的方式还我钱是为什么
  3. 优化的意义,不仅在于业绩的提升
  4. 今天跟某个投了社区团购的资本合伙人聊,发现对于社区团购的认知,还是太肤浅
  5. 销售的基本功(倾听、提问、聊天)
  6. 3类兼职渠道,赚钱的方法来了
  7. 为什么很多人赚不到钱?
  8. 多数人只有一种工资收入,想赚更多钱,只有去做副业
  9. 为什么很多设计师都会选择mac?
  10. 苹果手机扩容对手机好不好?