<td></td><td>foo</td>
I would like to return ['', 'foo']
but libxml's xpath //td/text()
returns just ['foo']
. How do I find the empty tag as ''
instead of (not matched)?
<td></td><td>foo</td>
I would like to return ['', 'foo']
but libxml's xpath //td/text()
returns just ['foo']
. How do I find the empty tag as ''
instead of (not matched)?
As long as you are selecting text nodes specifically, you can't. Because there simply is no text node in the first <td>
.
When you change your XPath expression to '//td'
, you get the two <td>
nodes. Use their text value in further processing.
While @Tomalak is perfectly right, in XPath 2.0 one can use:
//td/string(.)
and this produces a sequence of strings -- each one containing the string value of a corresponding td
element.
So, in your case the result will be the desired one:
"", "foo"