Question

<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)?

Was it helpful?

Solution

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.

OTHER TIPS

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"

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top