XPATH过滤无标记的子项

时间:2011-01-01 10:39:26

标签: xpath

有没有办法指定我只想选择无标记的子元素(在下面的示例中为“text”)?

<div>
   <p>...</p>
   "text"
</div>

3 个答案:

答案 0 :(得分:3)

text()函数与文本节点匹配。示例://div/text() - 匹配所有div元素中的所有文本子项。

答案 1 :(得分:1)

使用

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

这将选择所有文本节点,这些节点是文档顶部元素的子元素,并且不包含空白字符。

在具体示例中,这将仅选择字符串值为的文本节点:

'
       "text"
    '

XPath表达式:

/*/text()

/div/text()

选择两个文本节点,第一个文本节点仅包含空格,第二个文本节点与上面的文本节点相同:

'
       "text"
    '

答案 2 :(得分:0)

  

仅选择无标记的子元素

对我而言,这听起来像是选择了没有其他元素作为孩子的所有元素。但话说回来,你的例子中的“text”是不是一个元素,而是一个文本节点,所以我不确定你想要选择什么... 无论如何,这是一个选择这样的元素的解决方案。

//*[not(*)]

选择所有没有元素的元素作为子元素。如果您只想选择某些没有子元素的元素,请将第一个*替换为元素名称。另请注意,使用//通常很慢,因为它贯穿整个文档。考虑尽可能使用更具体的路径(在本例中为/div/*[not(*)])。