37

我有一个 XPath 可以选择我想要的类://div[@class='myclass']. 但它返回给我整个 div (<div class='myclass'>还有,但我想只返回这个标签的内容而不返回标签本身。我该怎么做?

4

4 回答 4

44
node() = innerXml

text() = innerText

两者都是数组,text()[1]第一个子文本节点也是如此......

于 2012-06-05T14:08:39.247 回答
35

使用 xpath,您将得到返回的东西是路径中最后一个不是条件的东西。那是什么意思?好吧,条件是[]'s 之间的东西(但你已经知道了)和你的读起来像pathElement[有一个 'class' 属性,值为 'my class' ]。pathElement 直接出现在[.

's then之外的所有东西[]都是路径,所以在//a/b/c[@blah='bleh']/d abcd都是路径元素,blah是属性,bleh是文字值。如果此路径匹配,它将返回一个d,即最后一个非条件事物。

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

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

于 2012-06-05T14:48:34.500 回答
9

旧的常见问题的新答案:

对于这个 XML

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

您可以使用 XPath 通过content以下两种方式之一进行选择:

  1. 文本节点选择

    这个 XPath,

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

    div将根据要求选择目标元素 的文本节点子节点content

  2. 元素的字符串值

    这个 XPath,

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

    将再次按要求返回目标元素 的字符串值。divcontent

    更多信息:这是解释元素字符串值的注释:

    元素节点的 字符串是该元素节点的所有文本节点后代的字符串值s按文档顺序串联。

于 2017-10-06T19:42:44.453 回答
4

你可以试试

//div[@class='myclass']/child::*

child::*选择上下文节点的所有子元素查看详细信息

于 2014-11-14T11:49:12.940 回答