欢迎来到天天文库
浏览记录
ID:8979344
大小:97.00 KB
页数:10页
时间:2018-04-13
《xpath详细使用介绍》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、如果要告诉别人买一加仑牛奶,您会怎么说?“请去买一加仑牛奶回来”还是“从前门出去,向左转,走三个街区向右转,再走半个街区向右转进入商店。走向四号通道,沿通道走五米向左,拿一瓶一加仑装的牛奶然后到收银台付款。再沿原路回家。”简直太可笑了。只要在“请去买一加仑牛奶回来”的基础上稍加指示,多数成人都能自己买回牛奶来。查询语言和计算机搜索与此类似。直接说“找一个Cryptonomicon的副本”要比编写搜索某个数据库的详细逻辑容易得多。由于搜索操作的逻辑非常相似,可以发明一种通用语言让您使用“找到NealStephenson的所有著作”这样的命令,然后编写对特定数据存储执行此类查询的引擎。
2、XPath在众多查询语言之中,结构化查询语言(SQL)是一种针对查询特定类型的关系库而设计和优化的语言。其他不那么常见的查询语言还有对象查询语言(OQL)和XQuery。但本文的主题是XPath,一种为查询XML文档而设计的查询语言。比如,下面这个简单的XPath查询可以在文档中找到作者为NealStephenson的所有图书的标题://book[author="NealStephenson"]/title作为对照,查询同样信息的纯DOM搜索代码如 清单1 所示:清单1.找到NealStephenson所有著作title元素的DOM代码ArrayListresult=newArra
3、yList();NodeListbooks=doc.getElementsByTagName("book");for(inti=0;i4、n=author.getChildNodes();StringBuffersb=newStringBuffer();for(intk=0;k5、k;}}if(stephenson){NodeListtitles=book.getElementsByTagName("title");for(intj=0;j6、编码(ISBN)检验码不匹配的所有图书,或者找出境外帐户数据库显示欠帐的所有作者。幸运的是,可以把XPath结合到Java程序中,这样就能发挥两者的优势了:Java做Java所擅长的,XPath做XPath所擅长的。直到最近,Java程序执行XPath查询所需要的应用程序编程接口(API)还因形形色色的XPath引擎而各不相同。Xalan有一种API,Saxon使用另一种,其他引擎则使用其他的API。这意味着代码往往把您限制到一种产品上。理想情况下,最好能够试验具有不同性能特点的各种引擎,而不会带来不适当的麻烦或者重新编写代码。于是,Java5推出了 javax.xml.xpath7、 包,提供一个引擎和对象模型独立的XPath库。这个包也可用于Java1.3及以后的版本,但需要单独安装JavaAPIforXMLProcessing(JAXP)1.3。Xalan2.7和Saxon8以及其他产品包含了这个库的实现。回页首一个简单的例子我将举例说明如何使用它。然后再讨论一些细节问题。假设要查询一个图书列表,寻找NealStephenson的著作。具体来说,这个图书列表的形式如 清单2 所示:清单2.包含图书信息的XML文档
4、n=author.getChildNodes();StringBuffersb=newStringBuffer();for(intk=0;k5、k;}}if(stephenson){NodeListtitles=book.getElementsByTagName("title");for(intj=0;j6、编码(ISBN)检验码不匹配的所有图书,或者找出境外帐户数据库显示欠帐的所有作者。幸运的是,可以把XPath结合到Java程序中,这样就能发挥两者的优势了:Java做Java所擅长的,XPath做XPath所擅长的。直到最近,Java程序执行XPath查询所需要的应用程序编程接口(API)还因形形色色的XPath引擎而各不相同。Xalan有一种API,Saxon使用另一种,其他引擎则使用其他的API。这意味着代码往往把您限制到一种产品上。理想情况下,最好能够试验具有不同性能特点的各种引擎,而不会带来不适当的麻烦或者重新编写代码。于是,Java5推出了 javax.xml.xpath7、 包,提供一个引擎和对象模型独立的XPath库。这个包也可用于Java1.3及以后的版本,但需要单独安装JavaAPIforXMLProcessing(JAXP)1.3。Xalan2.7和Saxon8以及其他产品包含了这个库的实现。回页首一个简单的例子我将举例说明如何使用它。然后再讨论一些细节问题。假设要查询一个图书列表,寻找NealStephenson的著作。具体来说,这个图书列表的形式如 清单2 所示:清单2.包含图书信息的XML文档
5、k;}}if(stephenson){NodeListtitles=book.getElementsByTagName("title");for(intj=0;j6、编码(ISBN)检验码不匹配的所有图书,或者找出境外帐户数据库显示欠帐的所有作者。幸运的是,可以把XPath结合到Java程序中,这样就能发挥两者的优势了:Java做Java所擅长的,XPath做XPath所擅长的。直到最近,Java程序执行XPath查询所需要的应用程序编程接口(API)还因形形色色的XPath引擎而各不相同。Xalan有一种API,Saxon使用另一种,其他引擎则使用其他的API。这意味着代码往往把您限制到一种产品上。理想情况下,最好能够试验具有不同性能特点的各种引擎,而不会带来不适当的麻烦或者重新编写代码。于是,Java5推出了 javax.xml.xpath7、 包,提供一个引擎和对象模型独立的XPath库。这个包也可用于Java1.3及以后的版本,但需要单独安装JavaAPIforXMLProcessing(JAXP)1.3。Xalan2.7和Saxon8以及其他产品包含了这个库的实现。回页首一个简单的例子我将举例说明如何使用它。然后再讨论一些细节问题。假设要查询一个图书列表,寻找NealStephenson的著作。具体来说,这个图书列表的形式如 清单2 所示:清单2.包含图书信息的XML文档
6、编码(ISBN)检验码不匹配的所有图书,或者找出境外帐户数据库显示欠帐的所有作者。幸运的是,可以把XPath结合到Java程序中,这样就能发挥两者的优势了:Java做Java所擅长的,XPath做XPath所擅长的。直到最近,Java程序执行XPath查询所需要的应用程序编程接口(API)还因形形色色的XPath引擎而各不相同。Xalan有一种API,Saxon使用另一种,其他引擎则使用其他的API。这意味着代码往往把您限制到一种产品上。理想情况下,最好能够试验具有不同性能特点的各种引擎,而不会带来不适当的麻烦或者重新编写代码。于是,Java5推出了 javax.xml.xpath
7、 包,提供一个引擎和对象模型独立的XPath库。这个包也可用于Java1.3及以后的版本,但需要单独安装JavaAPIforXMLProcessing(JAXP)1.3。Xalan2.7和Saxon8以及其他产品包含了这个库的实现。回页首一个简单的例子我将举例说明如何使用它。然后再讨论一些细节问题。假设要查询一个图书列表,寻找NealStephenson的著作。具体来说,这个图书列表的形式如 清单2 所示:清单2.包含图书信息的XML文档
此文档下载收益归作者所有