有没有办法指定我只想选择无标记的子元素(在下面的示例中为“text”)?
<div>
<p>...</p>
"text"
</div>
答案 0 :(得分:3)
text()
函数与文本节点匹配。示例://div/text()
- 匹配所有div
元素中的所有文本子项。
答案 1 :(得分:1)
使用强>:
/*/text()[normalize-space()]
这将选择所有文本节点,这些节点是文档顶部元素的子元素,并且不包含空白字符。
在具体示例中,这将仅选择字符串值为的文本节点:
'
"text"
'
XPath表达式:
/*/text()
或
/div/text()
选择两个文本节点,第一个文本节点仅包含空格,第二个文本节点与上面的文本节点相同:
'
"text"
'
答案 2 :(得分:0)
仅选择无标记的子元素
对我而言,这听起来像是选择了没有其他元素作为孩子的所有元素。但话说回来,你的例子中的“text”是不是一个元素,而是一个文本节点,所以我不确定你想要选择什么... 无论如何,这是一个选择这样的元素的解决方案。
//*[not(*)]
选择所有没有元素的元素作为子元素。如果您只想选择某些没有子元素的元素,请将第一个*替换为元素名称。另请注意,使用//
通常很慢,因为它贯穿整个文档。考虑尽可能使用更具体的路径(在本例中为/div/*[not(*)]
)。