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

(七)使用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 }
时间: 2024-10-19 00:32:05

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

【VC编程技巧】窗体?3.5对单文档或者多文档程序制作启动画面

(一)概要: 文章描述了怎样通过Visual C++ 2012或者Visual C++ .NET,为单文档或者多文档程序制作启动画面.在Microsoft Visual Studio 6.0中对于单文档程序(SDI)我们可以很方便利用微软提供的组件Visual C++ Component (Splash Screen).因为在Microsoft Visual Studio 6.0以后的版本或者Visual C++ .NET没有提供这个组件,我们可以通过自定义对话框来实现Splash Screen

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

1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况.这里我们主要总结网页内容和用户查询相关的内容. 判断网页内容是否与用户査询相关,这依赖于搜索引擎所来用的检索模型.检索模型是搜索引擎的理论基础,为量化相关性提供了一种数学模型,是对查询词和文档之间进行相似度计算的框架和方法.其本质就是相关度建模.如图所示,检索模型所在搜索引擎系统架构位置: 当然检

&nbsp; &nbsp; whois查询接口文档

Whois查询接口文档 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人.域名注册商).通过whois来实现对域名信息的查询.早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询.网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用.who

PowerShell技巧:使用XPath语法查询XML文件

[TechTarget中国原创] XML是存储结构化数据的一个很好的途径,但是想要让数据在其中发挥作用又会有些困难.每一种语言都有其特定方式来查询XML文件中的命名空间.元素及属性.PowerShell也不例外.PowerShell在查询XML文件时会略有不同,而该技巧主要依赖于Select-Xml命令和XPath语法上. XPath是定义XML文件组成的语言.XPath早在1999年就已经存在,一直被用于查询XML文件最标准的方法. XPath将XML文件定义为树.XML文件中的每个节点都节点

用DOM解析XML ,用xpath快速查询XML节点

XPath是一种快速查询xml节点和属性的一种语言,Xpath和xml的关系就像是sql语句和数据库的关系.用sql语句可以从数据库中快速查询出东西同样的用xPath也可以快速的从xml中查询出东西. 下面的示例演示了怎么用jdk自带的rt.jar完成dom解析 代码如下: test.xml的代码如下: <?xml version="1.0" encoding="UTF-8" ?> <inventory> <book year=&quo

【Windows编程】系列第十一篇:多文档界面框架

前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典型的多文档界面,他可以同时编辑多个文档,每个文档还可以最大化,最小化等等,我们今天就来看看多文档的基本框架是怎么实现的. 多文档界面的框架创建需要几下几步. 主框架窗口创建 主框架窗的创建跟普通的窗口没有什么区别,就是自己注册一个类并用该类创建一个重叠窗口,这个可以用CreateWindow/Cre

(20)ElasticSearch java项目中的根据指定条件删除文档和查询所有文档

1.删除index1中,title包含工厂的文档 @Test public void testQueryDelete() throws IOException, InterruptedException, ExecutionException { //指定集群 Settings settings = Settings.builder().put("cluster.name","my-application").build(); //创建客户端 TransportCl

JS获取/设置iframe内对象元素、文档的几种方法

1.IE专用(通过frames索引形象定位): document.frames[i].document.getElementById('元素的ID'); 2.IE专用(通过iframe名称形象定位): document.frames['iframe的name'].document.getElementById('元素的ID'); 以上方法,不仅对iframe适用,对frameset里的frame也同样适用.IE虽然擅于自定标准,但不得不说它很多的设计还是比较体现人性化的.比如这个,它在同样支持下

免费的页面浏览量查询api文档

页面浏览量查询api网站排名.流量.访问量.页面浏览量查询,获取指定站点历史数据. 接口名称:页面浏览量查询api 接口平台:开源接口 接口地址:http://api2.juheapi.com/alexa/historical 支持格式:json 请求方式:get/post 请求示例:http://api2.juheapi.com/alexa/historical?site=juhe.cn&key=yourKey&start=2015-10-12&range=1 调用样例及调试工具