使用XPath获取父节点内的文本

时间:2011-10-21 14:51:04

标签: xml xpath

例如,我得到这样的html字符串:

<p><br><a href=\"http://www.hello.com/en/\">www.hello.com</a></p>

我希望得到这样的结果:

<br><a href=\"http://www.hello.com/en/\">www.hello.com</a>

但是在使用XPath语句时我终于得到了“www.hello.com”

//p/text()

任何想法?

3 个答案:

答案 0 :(得分:1)

使用此:

//p

选择p元素。

答案 1 :(得分:1)

But I finally get "www.hello.com" when using the the XPath statement 

    //p/text() 

这将选择任何文本节点,它是文档中p元素的子元素。

但是,您不仅需要文本节点子节点,还需要任何子节点,包括<br><a>等元素。

<强>解决方案

使用:

/p/node()

根据提供的XML评估此XPath表达式(更正为格式良好的XML文档):

<p><br/><a href="http://www.hello.com/en/">www.hello.com</a></p>

选择了以下两个节点

<br/><a href="http://www.hello.com/en/">www.hello.com</a>

基于XSLT的验证

这种转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

 <xsl:template match="/">
  <xsl:copy-of select="/p/node()"/>
 </xsl:template>
</xsl:stylesheet>

应用于提供的XML文档

<p><br/><a href="http://www.hello.com/en/">www.hello.com</a></p>

将所选节点复制到输出

<br/><a href="http://www.hello.com/en/">www.hello.com</a>

答案 2 :(得分:0)

/p/*

将检索作为元素p子元素的所有元素。这就是你想要的。

警告即可。您的元素<br>格式不正确。你应该关闭它,以便它可以是一个格式良好的空元素<br/>