如何使用XPath获取节点值/ innerHTML?

问题描述:

我有一个XPath来选择我想要的类://div[@class='myclass']。但它返回了我全部的div(与<div class='myclass'>还可以,但我想没有标签本身只返回此标记的内容。我该怎么办呢?如何使用XPath获取节点值/ innerHTML?

使用xpath,您将返回的东西是路径中最后一个不是条件的东西,那是什么意思? []'s(但你已经知道了),你的读取像pathElement [,它有一个'class'属性值'我的班']。 hElement直接位于[之前。

所有[]的接外东西是路径,所以在//a/b/c[@blah='bleh']/d一个bÇd都是路径元件,嗒嗒是属性和的Bleh一个文字值。如果这条路径匹配,它将返回一个d,最后一个无条件的东西。

您的特定路径返回(系列)div,这是xpath路径中的最后一件事。因此,这个返回值包括您的案例中的顶级节点,div,以及它(他们)的所有(他们)孩子的下面。节点可以是元素或文本(或注释,处理指令,...)。

在一个节点下面可以有多个文本节点,因此数组pOcHa谈论。 x/text()返回x的直接子元素的所有文本,x/node()返回所有子节点,包括文本。

希望这会有所帮助。

node() = innerXml 

text() = innerText 

都是阵列,所以文本( )[1]是第一个儿童文本节点...

+0

如何将多个文本节点看起来像XML? text()是否会返回所选inner节点的子节点的所有innerTexts的连接? – CoDEmanX

+1

@CoDEmanX:'

text1text2text3
'就像我说的那样,它是一个**数组**,所以'div/node()[0] == div/text()[0] == text1'节点,'div /节点()[1] == span节点和'div/node()[2] == div/text()[1] == text3'节点 - 你必须自己连接它们一个接受数组的辅助函数)。 –

您可以尝试

// DIV [@类= 'MyClass的'] /子:: *

孩子:: *选择上下文节点的所有元素孩子see details

新的答案的时候,经常问的问题:

对于这个XML

<div class="myclass">content</div> 

您可以使用XPath来选择两种方式中的一种只是content

  1. 文本节点选择

    此XPath,

    //div[@class='myclass']/text() 
    

    将根据要求选择目标div元素的文本节点子项, content。一个元素

    此XPath的

  2. 字符串值,

    string(//div[@class='myclass']) 
    

    将返回针对性divstring-valuecontent,再次为要求。

    进一步的信息:这里的一个note说明字符串值元件

    元素节点的string-valuestring-value S中的元素的所有文本节点descendants的串接 节点按文件顺序排列。