<td></td><td>foo</td>
Я хотел бы вернуть ['', 'foo']
, но xpath //td/text()
libxml возвращает только ['foo']
. Как найти пустой тег как ''
вместо (не соответствует)?
<td></td><td>foo</td>
Я хотел бы вернуть ['', 'foo']
, но xpath //td/text()
libxml возвращает только ['foo']
. Как найти пустой тег как ''
вместо (не соответствует)?
Пока вы выбираете только текстовые узлы, вы не можете этого сделать. Потому что в первом <td>
просто нет текстового узла.
Когда вы измените свое выражение XPath на '//td'
, вы получите два узла <td>
. Используйте их текстовое значение в дальнейшей обработке.
td
и вызвал для них .text. Не так круто, как делать все в одном большом XPath ;-), но это работает.
- person joeforker; 11.03.2010
Хотя @Tomalak совершенно прав, в XPath 2.0 можно использовать:
//td/string(.)
и это создает последовательность строк, каждая из которых содержит строковое значение соответствующего элемента td
.
Итак, в вашем случае результат будет желаемым:
"", "foo"
<td>
, а затем использует их соответствующее текстовое значение.
- person Tomalak; 11.03.2010