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

xpath libxml2

4464 просмотра

2 ответа

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

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

Автор: joeforker Источник Размещён: 12.11.2019 09:25

Ответы (2)


6 плюса

Решение

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

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

Автор: Tomalak Размещён: 11.03.2010 09:57

8 плюса

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

//td/string(.)

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

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

"", "foo"

Автор: Dimitre Novatchev Размещён: 11.03.2010 07:19
Вопросы из категории :
32x32