XPATH:选择节点后的文本

时间:2015-10-11 13:11:28

标签: xml xpath

Car

鉴于以上代码段,如何获取值10.0.0; AIX,领新的Windows;和7042947,考虑到它们不在任何HTML标记内。

3 个答案:

答案 0 :(得分:2)

通常,答案是:“这取决于”。如果需要<div>中的非空白文本节点,您可以使用以下内容,但它会选择<div>下作为文本节点的任何子节点(但不是隆重-儿童)。

div/text()[normalize-space()]

如果您只想明确地跟随<div class="rule">...<h3>的文本节点,您可以指示XPath这样做:

div
    /div[@class="rule"]
    /following-sibling::*[1]
    /self::h3
    /following-sibling::text()[1]

这意味着:

  • 选择<div>
  • 选择具有属性<div>
  • 的每个子class="rule"
  • 选择第一个以下兄弟元素
  • 如果是h3
  • ,则只选择以下兄弟元素
  • 然后(如果以前都成功)选择第一个以下文本节点

或者,如果要在整个文档中选择以<h3>开头的任何非空白文本节点,则可以执行以下操作:

//text()[normalize-space()][preceding-sibling::*[1]/self::h3]

最后一个表达式专门用于忽略任何注释节点或PI指令,并且只有在紧接在前的兄弟元素<h3>时才选择文本节点,否则它将忽略它。 / p>

希望上面的示例为您提供了足够的工具来构建您的XPath,但如果您的需求不在那里并且您无法弄明白,那就问一下。

答案 1 :(得分:1)

XPath可能很简单:

"*/text()"

或作为:

"*/text()[normalize-space()]"

取决于图书馆。

答案 2 :(得分:0)

获取AIX,Linux,Windows

使用以下xpath,

//h3[2]/following-sibling::text()[1]

同样创建其他xpath来获取你的字符串。