`
liugang594
  • 浏览: 987589 次
  • 性别: 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帮助

分享到:
评论

相关推荐

    xpath语法与函数

    #### XPath简介 XPath是一种在XML文档中查找信息的语言,它用于在复杂的XML结构中定位特定的元素或属性。XPath对于理解并操作XML文档至关重要,尤其在XSLT转换、XQuery查询及XPointer定位中扮演核心角色。 #### ...

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

    ### 使用路径表达式在 XML 文档中进行导航 (XPath 简介) #### 一、XPath 的定义 XPath 是一种用于查找 XML 文档中的信息的语言。它使用路径表达式来选择 XML 文档中的节点或集合节点。XPath 被设计为 XSLT、...

    XPath 使用方法

    #### 一、XPath简介 XPath 是一门专门用于在 XML 文档中查找信息的语言。它能够帮助用户有效地浏览 XML 文档结构,并从中抽取特定数据。XPath 的重要性不仅体现在其本身的功能上,还在于它是 W3C XSLT 标准的关键...

    dom4j 和xpath

    XPath简介: XPath是W3C定义的一种语言,用于在XML文档中找到信息。它可以定位XML文档中的元素、属性、文本节点等,甚至可以进行复杂的查询和计算。 2. XPath的主要功能: - 查找节点:XPath表达式可以返回文档中...

    Xpath教程 如何使用xpath

    #### 一、XPath简介与节点类型 XPath是一种用于导航XML文档的语言。它使用路径表达式来选择XML文档中的节点或集合。XPath可以用来在XML文档中定位到任何位置,并且能够非常方便地提取所需的数据。XPath支持以下七种...

    XPath 2.0 程序员参考

    #### 四、XPath 2.0 的学习资源 本书《XPath 2.0 Programmer’s Reference》由 Michael Kay 编写,是学习 XPath 2.0 的权威指南。本书全面介绍了 XPath 2.0 的语法、功能及应用实例,非常适合希望深入掌握 XPath ...

    python神奇xpath

    #### XPath简介 XPath是一种用于在XML文档中查找信息的强大查询语言,同时也适用于HTML文档的解析。XPath允许我们通过元素和属性来进行导航,并从中提取所需的信息。相较于复杂的正则表达式,XPath提供了更为简洁且...

    DOM4J_xpath

    ### DOM4J与XPath详解 #### 一、DOM4J简介 **DOM4J**是一款由dom4j.org开发的开源XML解析库,专为Java平台设计,它不仅支持DOM和SAX这两种标准的XML解析方式,还兼容JAXP(Java API for XML Processing)。DOM4J以...

    xPath-API文档

    1. XPath简介:介绍XPath的基本概念和作用。 2. 路径表达式:讲解如何编写路径表达式来选取节点。 3. 节点测试和轴:详细解释各种节点测试和轴的用法。 4. 函数和运算符:阐述XPath提供的内置函数和逻辑、比较及算术...

    用xpath精确定位节点元素

    #### XPath简介与重要性 XPath是一种用于在XML文档中查找信息的语言。它被设计用来在XML文档中导航,帮助开发者精确地定位和选取节点。XPath在XSLT(Extensible Stylesheet Language Transformations)中扮演着核心...

    XPath详解PDF版

    #### 一、XPath简介 XPath是一种在XML文档中查找信息的语言。它用于在XML树结构中导航,并且能够返回所匹配节点或节点集。XPath的强大之处在于其简洁性和灵活性,允许用户轻松地从复杂的XML文档中提取所需的数据。 ...

    XPath Checker使用

    #### 四、XPath Checker 结合 Firebug 使用技巧 1. **Firebug 简介**: - Firebug 是另一款非常强大的 Firefox 开发工具,它可以用来调试 HTML、CSS 和 JavaScript,同时也被广泛用于查看网页的 DOM 结构。 2. **...

    XPath基础用法详解

    1. **XPath简介** XPath是W3C标准的一部分,它的主要目的是为了提供一种简洁且相对独立的方式来定位XML文档中的特定部分。通过XPath,开发者可以快速地选取和操作XML文档的结构信息,用于数据提取、验证和转换。 2...

    XPath语法详细介绍..XPath语法详细介绍

    #### XPath简介 XPath是一种用于在XML文档中进行导航的查询语言。它提供了简洁、高效的方式来定位和提取文档中的特定部分。XPath不仅仅适用于XML文档的搜索,还是XSLT(一种用于转换XML文档的语言)的核心组成部分。...

    C#操作xml之xpath语法

    #### XPath简介 XPath是一种用于在XML文档中查询和定位元素与属性的强大语言。其语法类似于文件系统的路径表达式,但更灵活,允许使用模式匹配和条件筛选。通过XPath,开发者能够精确地选取XML文档中的特定部分,...

    XPath 简单语法

    #### 一、XPath简介 XPath是一种在XML文档中查找信息的语言,类似于HTML中的CSS选择器或SQL中的查询语句。XPath能够快速定位到XML文档中的某个节点或者一组节点,并且可以用来抽取节点数据或者进行条件判断等操作。...

    xpath学习笔记 比较入门大家共享

    1. XPath简介 XPath的核心在于其路径表达式,它类似于我们熟悉的文件系统路径,但用于导航XML文档的结构。XPath还包含了一个丰富的标准函数库,涵盖了字符串、数值、日期时间比较、节点处理、QName处理等多种功能。...

    B06_1_Xpath提取网页数据.md

    #### 一、Xpath简介 Xpath是一种查询语言,主要用于在XML文档中查找信息。它可以轻松地在XML文档中通过元素和属性进行导航。虽然Xpath最初是为了处理XML而设计的,但它同样适用于HTML文档的解析与数据提取。 #### ...

Global site tag (gtag.js) - Google Analytics