PHP DOMElement :: getElementsByTagName - Wie auch immer, um nur die direkt passenden Kinder zu bekommen?

7

gibt es eine Möglichkeit, nur die unmittelbaren Kinder abzurufen, die bei einem Aufruf von DOMElement :: getElementsByTagName gefunden wurden? Zum Beispiel habe ich ein XML-Dokument mit einem Kategorieelement. Dieses Kategorieelement hat Unterkategorienelemente (die die gleiche Struktur haben), wie:

%Vor%

Wenn ich ein DOME-Element habe, das die oberste Kategorie repräsentiert,

%Vor%

gibt eine Liste mit den Knoten für alle 'id' Elemente zurück, wobei ich nur die von der obersten Ebene möchte. Gibt es eine Möglichkeit, dies außerhalb von XPath zu tun?

    
rr. 15.06.2010, 22:52
quelle

4 Antworten

15

Ich fürchte, nicht. Sie müssen die Kinder durchlaufen oder XPath verwenden.

%Vor%

Beispiel mit XPath und Ihrer XML-Datei:

%Vor%

gibt 2 .

    
Artefacto 15.06.2010, 22:56
quelle
11

So etwas sollte tun

%Vor%

edit : instanceofDOMElement-Überprüfung hinzugefügt

    
Kris 15.06.2010 22:58
quelle
2

Ich benutze kein PHP, aber wenn PHP das DOM API tatsächlich als hat den W3C angegeben , es muss eine childNodes-Eigenschaft für jedes Node-Objekt vorhanden sein. Sie sollten in der Lage sein, über alle direkten Kinder zu iterieren und ihren Tag-Namen zu testen, um zu sehen, ob sie der gesuchte sind. Abhängig davon, wie Ihr Baum aussieht, ist dies möglicherweise langsamer als das Abrufen aller Elemente nach Tag-Namen und das Testen der Baumposition, oder er kann erheblich schneller sein.

    
Nick Bastin 15.06.2010 22:58
quelle
-1

Sie können Elemente mit === vergleichen. Dies vermeidet die Instanziierung eines Xpath-Objekts.

%Vor%

Abhängig von der Größe Ihres XML-Dokuments können Sie feststellen, dass Xpath besser funktioniert. In puncto Eleganz ist diese Lösung jedoch sauberer.

    
MerlinTheMagic 22.01.2015 23:54
quelle

Tags und Links