如何在XPath中为空节点的text()返回''?

时间:2010-03-10 21:23:15

标签: xpath libxml2

<td></td><td>foo</td>

我想返回['', 'foo'],但libxml的xpath //td/text()只返回['foo']。如何找到空标签''而不是(不匹配)?

2 个答案:

答案 0 :(得分:8)

虽然@Tomalak完全正确,但在XPath 2.0中可以使用

//td/string(.)

这会产生一系列字符串 - 每个字符串都包含相应td元素的字符串值。

因此,在您的情况下,结果将是所需的结果:

"", "foo"

答案 1 :(得分:6)

只要您专门选择文本节点,就不能。因为第一个<td>中根本没有文本节点。

当您将XPath表达式更改为'//td'时,您将获得两个<td>个节点。在进一步处理中使用其文本值。