<td></td><td>foo</td>
Come posso restituire '' per il testo di un nodo vuoto() in XPath?
Vorrei tornare ['', 'foo']
ma libxml di XPath //td/text()
restituisce solo ['foo']
. Come trovo il tag vuoto come ''
anziché (non corrispondente)?
<td></td><td>foo</td>
Come posso restituire '' per il testo di un nodo vuoto() in XPath?
Vorrei tornare ['', 'foo']
ma libxml di XPath //td/text()
restituisce solo ['foo']
. Come trovo il tag vuoto come ''
anziché (non corrispondente)?
Finché si selezionano specificamente i nodi di testo, non è possibile. Perché semplicemente non esiste un nodo di testo nel primo <td>
.
Quando si modifica l'espressione XPath su '//td'
, si ottengono i due nodi <td>
. Usa il loro valore di testo in ulteriore elaborazione.
Mentre @Tomalak perfettamente ragione, in XPath 2.0 si può usare:
//td/string(.)
e questo produce una sequenza di stringhe - ognuno contenente il valore di stringa di un corrispondente elemento td
.
Quindi, nel tuo caso il risultato sarà quello desiderato:
"", "foo"
+1. Questo fa esattamente ciò che fa la mia soluzione per XPath 1.0 - prende i nodi '
Finii per trovare tutti i nodi 'td' e chiedendo .text su di loro. Non bello come fare tutto in un unico XPath ;-) ma funziona. – joeforker
@joeforker: finché non si ha accesso a XPath 2.0 tutto lucido, questa è l'unica opzione possibile. :-) – Tomalak