Как мне вернуть '' для пустого узла text () в XPath? - PullRequest
10 голосов
/ 11 марта 2010

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

Я хотел бы вернуть ['', 'foo'], но xpath libxml //td/text() возвращает просто ['foo']. Как найти пустой тег как '' вместо (не совпадает)?

Ответы [ 2 ]

8 голосов
/ 11 марта 2010

Хотя @Tomalak совершенно прав, в XPath 2.0 можно использовать :

//td/string(.)

и получается последовательность строк, каждая из которых содержит строковое значение соответствующего td элемента.

Итак, в вашем случае результат будет желаемым:

"", "foo"

6 голосов
/ 11 марта 2010

Пока вы специально выбираете текстовые узлы, вы не можете. Потому что в первом <td>.

просто нет текстового узла.

Когда вы меняете выражение XPath на '//td', вы получаете два узла <td>. Используйте их текстовое значение в дальнейшей обработке.

...