XPATH筛选器无标记子项

XPATH筛选器无标记子项,xpath,Xpath,是否有任何方法可以指定只选择无标记的子元素(在下面的示例中为“text”) “文本” 函数的text()匹配文本节点。示例://div/text()-匹配所有div元素中的所有文本子元素 仅选择无标记的子元素 对我来说,这听起来像是选择了所有没有其他元素作为子元素的元素。但同样,在您的示例中,“text”不是一个元素,而是一个文本节点,所以我不确定您想要选择什么。。。 无论如何,这里有一个选择这些元素的解决方案 选择所有没有作为子元素的元素。如果只希望选择没有子元素的某些元素,请将第一个*替

是否有任何方法可以指定只选择无标记的子元素(在下面的示例中为“text”)


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

仅选择无标记的子元素

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

选择所有没有作为子元素的元素。如果只希望选择没有子元素的某些元素,请将第一个*替换为元素名称。还请注意,使用
/
通常比较慢,因为它贯穿整个文档。在可能的情况下考虑使用更具体的路径(例如,<代码>/div/*[NO](*)]/COD>在此情况下。

< P> <强>使用< /强>:

/*/text()[normalize-space()]
'
       "text"
    '
这将选择作为文档顶部元素的子元素且不仅仅由空白字符组成的所有文本节点

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

/*/text()[normalize-space()]
'
       "text"
    '
XPath表达式:

/*/text()

两者都选择两个文本节点,第一个节点仅包含空白,第二个节点与上述文本节点相同:

'
       "text"
    '

严格来说,
text()
不是函数。这是一个节点测试,就像
//div
中的
div
是一个节点测试一样。括号只是用来区别
//text
。还要注意,对于给定的输入示例,
//div/text()
确实选择了两个这样的文本节点,一个在
p
元素之前,这个节点只包含空格,第二个在
p
元素之后。因此,您可能希望
//div/text()[normalize-space()]
排除任何纯空白文本节点。
'
       "text"
    '