XPath o.ä. für JavaScript
Sven
- javascript
0 Andreas Dölling0 Sven
0 Thomas J.S.0 svg4you
Hallo zusammen,
ich hab ein XML-Dokument das ich aus XMLHttpRequest.getResponseXML() bekomme und anschließend verarbeiten möchte. Dazu muss ich verschiedene Knoteninhalte extrahieren. Eine mögliche Aufgabe wäre z.B.: Gib mir (die Inhalte) aller "xyz"-Knoten deren Attribut "x" den Wert "y" hat oder so ähnlich.
Meine Frage ist nun, ob hierfür jemand ein paar komfortablere Methoden oder evtl. auch eine KLEINE JS-Library kennt (jeweils Cross-Browser), die mir solche Anfragen etwas vereinfacht. Bei meiner ersten Recherche hab ich http://mcc.id.au/xpathjs/ gefunden. Aber allein schon die Länge des JS steht in keinem Vergleich zu der Komplexität meiner Anfragen - die sind nämlich relativ trivial.
Vielleicht hat ja jemand ein zwei solcher Methoden, die er/sie selbst immer verwendet.
Würde mich über Antwort freuen.
Vielen Dank,
Sven
Hallo,
schau mal unter http://developer.mozilla.org/en/docs/Introduction_to_using_XPath_in_JavaScript und unter http://dean.edwards.name/weblog/2006/03/faster/.
Ciao,
Andreas
Hallo,
schau mal unter http://developer.mozilla.org/en/docs/Introduction_to_using_XPath_in_JavaScript und unter http://dean.edwards.name/weblog/2006/03/faster/.
Ja, ja, aber das ist doch FF-spezifisch, oder?!? Ich brauch schon was, das überall funzt. Mein aktueller Stand: http://km0ti0n.blunted.co.uk/mozXPath.xap
Was meinst du/ihr?
Gruß,
Sven
Hallo,
Aber allein schon die Länge des JS steht in keinem Vergleich zu der Komplexität meiner Anfragen - die sind nämlich relativ trivial.
Wenn deine Anfragen in dem Sinne trivial sind, wäre es nicht einfacher wenn du mit DOM und z.B. einigen Schleifen dein Vorhaben selbs in Code umsetzen würdest?
Grüße
Thomas
Tach Sven,
Eine mögliche Aufgabe wäre z.B.: Gib mir (die Inhalte) aller "xyz"-Knoten deren Attribut "x" den Wert "y" hat oder so ähnlich.
Meine Frage ist nun, ob hierfür jemand ein paar komfortablere Methoden oder evtl. auch eine KLEINE JS-Library kennt (jeweils Cross-Browser), die mir solche Anfragen etwas vereinfacht.
XPath würde ich hier vermeiden und eher mit DOM-Methoden arbeiten:
function extractData(el_name, attr_name, attr_wert)
{
var el_knoten=document.getElementsByTagName(el_name);
var anzahl=el_knoten.length;
var el_inhalt=[], akt_knoten;
for(var i=0; i<anzahl; i++)
{
akt_knoten=el_knoten.item(i);
if(akt_knoten.nodeType==1 && akt_knoten.getAttribute(attr_name)==attr_wert)
el_inhalt.push(akt_knoten.firstChild.nodeValue);
// if(...) evtl. kombiniert mit akt_knoten.hasAttribute(attr_name) - kennt IE nicht
}
return el_inhalt.join("\n");
}
// Aufruf bezogen auf Dein Beispiel:
alert(extractData("xyz", "x", "y"));
el_name kann auch "*" sein, dann werden alle Elemente berücksichtigt.
Man liest sich,
svg4you