2010-04-26 11 views
5

Wenn Sie die xml unten in $ (xml) haben, würden Sie droopy erhalten mit:jQuery - XPath finden?

$(xml).find("animal").find("dog").find("beagle").text() 

Gibt es ein Äquivalent Weg in jQuery XPath zu verwenden, wie

$(xml).xpathfind("/animal/dog/beagle").text()? 

<animal> 
    <dog> 
     <beagle> 
      droopy 
     </beagle> 
     ... 

Antwort

5

jQuery verwendet, um sehr zu unterstützen grundlegende XPath, einschließlich des Beispiels, das Sie gaben.

$(xml).find("animal/dog/beagle") 

EDIT: Du hast Recht, sie haben es aus dem Kern offenbar entfernt, so haben Sie eine „Kompatibilität“ plugin zu verwenden.

EDIT: Aktualisiert Link zu XPath-Plugin XPath Plugin

+1

Ich habe es versucht, aber es hat nicht funktioniert. Die CSS-Selektor-Syntax "Tier> Hund> Beagle" hat es getan. Ich habe auch "/ a/d/b", "// a/d/b" ausprobiert. Muss ich ein Plugin einbauen? – Steve

+0

Ich denke, es hat mit dem führenden Schrägstrich zu tun. Probieren Sie "a/d/b" anstelle von "/ a/d/b" –

+0

Ja, ich habe versucht, ein altes Xpath-Plugin von Resig, aber mit Blick auf die Quelle, es war eine minimale Abdeckung von XPath. Naja, der CSS-Selector reicht aus. Ich wollte nur sicher gehen, wenn xpath Teil der letzten jQuery war. – Steve

4

jQuery unterstützt grundlegende XPath tatsächlich, so dass Sie nur find verwenden können.

Alternativ können Sie die CSS-Selektorsyntax verwenden. Für Ihr spezielles Beispiel würden Sie verwenden $(xml).find("animal > dog > beagle").text()

+0

Und um den Attributwert zu erhalten, könnten Sie '$ (xml) .find (" element "). Attr (" attribute ")' verwenden – sree