`
liugang594
  • 浏览: 978777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Xpath简介与使用四

XML 
阅读更多

八、处理命令空间

一般一个规范xml都会有命名空间的定义,例如:

<?xml version="1.0" encoding="UTF-8"?>
<tg:bookstore xmlns:tg="http://www.tibco.com/cdc/liugang"
           xmlns:ns="http://www.tibco.com/cdc/liugang/ns">
          <ns:book>
          	<tg:title>Hello</tg:title>
          </ns:book>
</tg:bookstore>

 

bookstore的命名空间就是xmlns:tg代表的值;book的命名空间就是xmlns:ns代表的值。

 

xpath中定义了与节点名和命名空间有关的三个函数:

  • local-name()
  • namespace-uri()
  • name()

例如要查找所有在当前文档中定义的,元素的local名为book的结点,则如下:

 

		XPathFactory xPathFactory = XPathFactory.newInstance();
		XPath xpath = xPathFactory.newXPath();
		XPathExpression compile = xpath.compile("//*[local-name()='book']");
		NodeList list = (NodeList) compile.evaluate(document,XPathConstants.NODESET);

 

如果元素定义了命空间,则使用xpath查找时也必须指定在同一个命空间中,即便元素使用的是缺省的命空间,刚查找也需要定义缺省的命名空间。

 

例如文档:

 

<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns="http://www.tibco.com/cdc/liugang" xmlns:tg="http://www.tibco.com/cdc/liugang/tg"
           xmlns:ns="http://www.tibco.com/cdc/liugang/ns">
          <ns:book>
          	<tg:title>Hello</tg:title>
          </ns:book>
          <computer>
               <id>ElsIOIELdslke-1233</id>
          </computer>
</bookstore>

 

定义了三个命名空间:缺省的;xmlns:tg;xmlns:ns。

 

要使用命名空间,我们需要设置XPath的命名空间上下文:NamespaceContext。这是一个接口类型,我们需要自定义去实现它。例如对应于上文档的三个命名空间,可以如下实现:

 

class CustomNamespaceContext implements NamespaceContext{

		public String getNamespaceURI(String prefix) {
			if(prefix.equals("ns")){
				return "http://www.tibco.com/cdc/liugang/ns";
			}else if(prefix.equals("tg")){
				return "http://www.tibco.com/cdc/liugang/tg";
			}else if(prefix.equals("df")){
				return "http://www.tibco.com/cdc/liugang";
			}
			return XMLConstants.NULL_NS_URI;
		}

		public String getPrefix(String namespaceURI) {
			return null;
		}

		public Iterator getPrefixes(String namespaceURI) {
			return null;
		}
		
	}

 

方法名都非常直观。这里只实现第一个方法。

 

这样,如果要查找命名空间是缺省,元素名为computer的所有元素,可以如下实现:

		XPathFactory xPathFactory = XPathFactory.newInstance();
		XPath xpath = xPathFactory.newXPath();
		xpath.setNamespaceContext(new CustomNamespaceContext());
		XPathExpression compile = xpath.compile("//df:computer");
		NodeList list = (NodeList) compile.evaluate(document,XPathConstants.NODESET);
		for(int i = 0;i<list.getLength();i++){
			Node item = list.item(i);
			System.out.println(item.getNodeName()+"  "+item.getNodeValue());
		}

 

九、其他

 

除此之外,在java中,还可以定义扩展的函数解释器和变量解释器,看XPath的方法:

 

    /**
     * <p>Establish a variable resolver.</p>
     * 
     * <p>A <code>NullPointerException</code> is thrown if <code>resolver</code> is <code>null</code>.</p>
     * 
     * @param resolver Variable resolver.
     * 
     *  @throws NullPointerException If <code>resolver</code> is <code>null</code>.
     */
    public void setXPathVariableResolver(XPathVariableResolver resolver);


    /**
       * <p>Establish a function resolver.</p>
       * 
       * <p>A <code>NullPointerException</code> is thrown if <code>resolver</code> is <code>null</code>.</p>
       * 
       * @param resolver XPath function resolver.
       * 
       * @throws NullPointerException If <code>resolver</code> is <code>null</code>.
       */
    public void setXPathFunctionResolver(XPathFunctionResolver resolver);

 

 

具体的可以参看API帮助

分享到:
评论

相关推荐

    使用路径表达式在 XML 文档中进行导航(xpath简介)

    1) XPath 使用路径表达式在 XML 文档中进行导航 2) XPath 是一个 W3C 标准 3) XPath 包含一个标准函数库 4) XPath 是 XSLT 中的主要元素

    XSLT与XPath入门转换XML文档与数据

    中文名: XSLT与XPath入门:转换XML文档与数据 原名: Beginning XSLT and XPath: Transforming XML Documents and Data 作者: Ian Williams资源格式: PDF 版本: 文字版 出版社: Wrox书号: 0470477253发行时间: 2009年...

    dom4j,Xpath等全家庭打包

    xml解析,dom4j需要的jar 包全家庭打包,包含dom4j的使用简介,.jar包,和dom4jAPI查看文件还有XPAth的

    Dom4j_使用简介

    Dom4j_使用简介DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java ...

    JsoupXpath:纯Java实现的支持W3C Xpath 1.0标准语法HTML解析器。A html parser with xpath base on Jsoup and Antlr4. Maybe it is the best in java,ha ha.Just try it

    JsoupXpath 是一款纯Java开发的使用xpath解析提取html数据的解析器,针对html解析完全重新实现了W3C XPATH 1.0标准语法,xpath的Lexer和Parser基于Antlr4构建,html的DOM树生成采用Jsoup,故命名为JsoupXpath. ...

    DOM4J使用简介(很实用)

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the ...DOM4J使用起来非常简单。

    2022年Python爬虫最全资料【6年爬虫经验精华总结】

    1. Python爬虫简介与环境安装 - Pythonn环境 - Selenium安装 - Python相关包 2. 基本库的使用 - 爬虫基本原理; - urlib库使用; - requests库使用; - bs4使用; - xpath和lxml使用; - selenium使用; -...

    dom4j使用简介

    Dom4j 是一个易用的、开源的库,用于 XML,XPath 和 XSLT。它应用于 Java 平 台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP

    Java中读取XML 文件的知识点

    一、Dom4j下载及使用Dom4j读写XML简介: 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/ 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

    Ajax完全自学手册(PPT)

    第1章 Ajax简介以及使用的场合 第2章 浏览器中的JavaScript Test4Navigator.htm User-Agent检测法 Test4Window1.htm window对象属性 test4Alert.htm 系统对话框 Test4Timeout.htm 时间间隔和暂停 Test4...

    Python_selenium课件及源码

    1_自动化测试简介.ppt 2_开发环境搭建.ppt 3_4_页面元素定位.ppt 5_7_xpath定位.ppt 8_鼠标和键盘事件.ppt 9-10_对话框与窗口管理.ppt 11_脚本中等待.ppt 12_处理对话框.ppt 13_测试用例设计.ppt 14测试用例模块化....

    ASP.NET4高级程序设计(第4版) 3/3

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

    Ajax完全自学手册(源代码).rar

    第1章 Ajax简介以及使用的场合 HelloWorld 第一个Ajax应用程序 第2章 浏览器中的JavaScript Test4Navigator.htm User-Agent检测法 Test4Window1.htm window对象属性 test4Alert.htm 系统对话框 Test4Time...

    Selenium私房菜(新手入门教程)1

    2.Selenium私房菜系列2 -- XPath的使用 3.Selenium私房菜系列3 -- Selenium API参考手册 4.Selenium私房菜系列4 -- Selenium IDE的使用 5.Selenium私房菜系列5 -- 第一个Selenium RC测试案例 6.Selenium私房菜系列6 ...

    Ajax完全自学手册PPT和源代码(ptt格式)

    第1章 Ajax简介以及使用的场合 HelloWorld 第一个Ajax应用程序 第2章 浏览器中的JavaScript Test4Navigator.htm User-Agent检测法 Test4Window1.htm window对象属性 test4Alert.htm 系统对话框 Test4Timeout.htm ...

    [XML入门经典(第4版)].(Beginning.XML.4th.Edition).(美)亨特,(美)拉夫特,(美)福思特.扫描版.pdf

    中文名: XML入门经典(第四版) 原名: Beginning XML 4th Edition 作者: (美)亨特 (美)拉夫特 (美)福思特 译者: 吴文国 资源格式: PDF 版本: 扫描版 出版社: (美)亨特 (美)拉夫特 (美)福思特 书号: 9787302194651 发行...

    Python爬取豆瓣图书信息

    爬取指定标签List下评分8.5分以上的图书信息,包括书名、作者、评分、简介,并保存到excel,以标签分类,放到不同的sheet中。核心代码: title= book.find_element_by_xpath('.//a[1]').text... #简介写入第i行的第四列

    javascript完全学习手册2 源码

    第1章 JavaScript简介 1.1 JavaScript概述 1.1.1 什么是JavaScript 1.1.2 JavaScfipt的基本特点 1.1.3 常用的Web开发语言 1.2 JavaScript的应用 1.2.1 客户端应用 1.2.2 服务器端应用 1.3 在web页面中...

Global site tag (gtag.js) - Google Analytics