Warum schauen sich alle das Attribut "prop" an? Habe ich etwas verpasst? Es heißt nur, die ersten drei Knoten zu bekommen.
6
Jeder schaut sich das Prop-Attribut an, weil das gefragt wurde. Holen Sie sich alle Knoten, auf denen prop "Foo" enthält. Fügen Sie <a prop="Foo5" /> hinzu und Sie werden sehen, warum es nicht nur "die ersten drei Knoten" sind.
erlando
Die Frage im Körper ist ungeachtet des Titels schlecht formuliert. Kann foo wirklich in einem Requisitenattribut enthalten sein oder möchten Sie ernsthaft nur die ersten drei Knoten?
3
Ja, beziehen Sie sich bitte auf den Titel (und bearbeiten Sie ihn gerne).
Ripper234
Wenn Sie einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung benötigen, finden
Berücksichtigung der
Antworten:
307
//a[contains(@prop,'Foo')]
Funktioniert, wenn ich dieses XML verwende, um Ergebnisse zurückzugewinnen.
Bearbeiten: Eine andere Sache zu beachten ist, dass, während der XPath oben die richtige Antwort für diese bestimmte XML zurückgibt, wenn Sie garantieren möchten, dass Sie nur die "a" -Elemente im Element "bla" erhalten, sollten Sie, wie andere erwähnt haben, auch verwenden
/bla/a[contains(@prop,'Foo')]
Dadurch werden alle "a" -Elemente in Ihrem gesamten XML-Dokument durchsucht, unabhängig davon, ob Sie in einem "blah" -Element verschachtelt sind
//a[contains(@prop,'Foo')]
Ich habe dies aus Gründen der Gründlichkeit und im Geiste des Stackoverflow hinzugefügt. :) :)
Die Achse - Durchsuchen Sie jeden Knoten darunter und den Knoten selbst. Es ist oft besser, dies zu sagen als //. Ich bin auf einige Implementierungen gestoßen, bei denen // irgendwo bedeutet (Nachkomme oder Selbst des Wurzelknotens). Die anderen verwenden die Standardachse.
* or /bla/a
Das Tag - ein Platzhalter-Match und / bla / a ist ein absoluter Pfad.
[contains(@prop,'Foo')] or [position() <= 3]
Die Bedingung innerhalb von []. @prop ist eine Abkürzung für attribute :: prop, da attribute eine weitere Suchachse ist. Alternativ können Sie die ersten 3 mit der Funktion position () auswählen.
Antworten:
Funktioniert, wenn ich dieses XML verwende, um Ergebnisse zurückzugewinnen.
Bearbeiten: Eine andere Sache zu beachten ist, dass, während der XPath oben die richtige Antwort für diese bestimmte XML zurückgibt, wenn Sie garantieren möchten, dass Sie nur die "a" -Elemente im Element "bla" erhalten, sollten Sie, wie andere erwähnt haben, auch verwenden
Dadurch werden alle "a" -Elemente in Ihrem gesamten XML-Dokument durchsucht, unabhängig davon, ob Sie in einem "blah" -Element verschachtelt sind
Ich habe dies aus Gründen der Gründlichkeit und im Geiste des Stackoverflow hinzugefügt. :) :)
quelle
xmlme.com
Leitet jetzt zu einem anderen Host weiter und scheint das Tool oder ähnliches nicht zu hosten.Dieser XPath gibt Ihnen alle Knoten mit Attributen, die 'Foo' enthalten, unabhängig vom Knotennamen oder Attributnamen:
Wenn Sie mehr am Inhalt des Attributs selbst und nicht unbedingt am übergeordneten Knoten interessiert sind, lassen Sie einfach das / ..
quelle
//@*[contains(., 'Foo')]
Oder:
Oder:
Präpariert:
Die Achse - Durchsuchen Sie jeden Knoten darunter und den Knoten selbst. Es ist oft besser, dies zu sagen als //. Ich bin auf einige Implementierungen gestoßen, bei denen // irgendwo bedeutet (Nachkomme oder Selbst des Wurzelknotens). Die anderen verwenden die Standardachse.
Das Tag - ein Platzhalter-Match und / bla / a ist ein absoluter Pfad.
Die Bedingung innerhalb von []. @prop ist eine Abkürzung für attribute :: prop, da attribute eine weitere Suchachse ist. Alternativ können Sie die ersten 3 mit der Funktion position () auswählen.
quelle
John C ist am nächsten, aber XPath unterscheidet zwischen Groß- und Kleinschreibung. Der richtige XPath wäre also:
quelle
Haben Sie etwas versucht wie:
// a [enthält (@prop, "Foo")]
Ich habe die Includes-Funktion noch nie verwendet, vermute aber, dass sie wie angekündigt funktionieren sollte ...
quelle
Wenn Sie auch den Inhalt des Links selbst abgleichen müssen, verwenden Sie text ():
//a[contains(@href,"/some_link")][text()="Click here"]
quelle
/ bla / a [enthält (@prop, "foo")]
quelle
Für den obigen Code ... // * [enthält (@ prop, 'foo')]
quelle
Versuche dies:
// a [enthält (@ prop, 'foo')]
Das sollte für alle "a" -Tags im Dokument funktionieren
quelle