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

joe*_*ker 10 xpath libxml2

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

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

Dim*_*hev 8

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

//td/string(.)

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

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

"", "foo"


Tom*_*lak 6

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

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