2016-05-10 2 views
0

Bitte beachten Sie die folgende Struktur:Ein inneres untergeordnetes Element mit XPath ausschließen?

<Table> 
    <TR> 
     <TD> 
      <Table> 
       <TD></TD> 
      </Table> 
     </TD> 
     <TD>Value 1</TD> 
     <TD>Value 2</TD> 
     <TD>Value 3</TD> 
     <TD></TD> 
    </TR> 
</Table> 

Ich möchte eine Liste der <TD> Knoten bekommen, aber nur, wenn sie nicht über einen untergeordneten Knoten (oder, wenn sie nicht über ein Kind namens ‚Tisch‘ in diesem speziellen Beispiel). Ich habe versucht, die zusätzlichen <TD><TABLE> Knoten mit Hilfe der not Optionen - //table/tr[not(td/table)] zu filtern, aber ich bekomme ein leeres Objekt. Das Endergebnis sollte eine Liste mit 4 <TD> Objekt (Wert 1 bis 3 und das leere unten) sein. Wie kann ich es tun?

Antwort

2

Sie können <td> Elemente auswählen, die nicht Kind <table> wie folgt hat:

//table/tr/td[not(table)] 

aber Sie können <tr> Element nicht auswählen, dass particlar <td> ohne die <table> enthält. XPath kann nur einen Teil auswählen, der in der Quell-XML vorhanden ist. Insbesondere gibt es kein <tr> Element, das nur 4 <td> s in Ihrem XML enthält.

+0

Ich sehe, ich wusste nicht, dass es nicht möglich ist. Also was wären meine anderen Optionen? programmatisch diesen spezifischen Knoten nicht analysieren? – Okiba

+0

Finden Sie das Ziel '', dann finden Sie programmatisch alle '' mit Kind '

' innerhalb der '' und entfernen Sie sie. – har07

+0

Ja, das ist, was ich dachte. Grosses Dankeschön :) – Okiba