mist: Elemente in XML datei bis zu bestimmtem Inhalt zählen.

Hallo.

Ich stecke gerade an einem Problem fest an dem ich leider trotz ausführlicher Recherche nicht weiterkomme.
Anbei ein Beisp. der XML um die es geht:

  
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<verzeichnis>  
     <titel>Städte</titel>  
  
     <eintrag La="CH">  
          <stichwort>Genf</stichwort>  
          <stichwort>Zuerich</stichwort>  
        </eintrag>  
  
     <eintrag La="D">  
          <stichwort>Koeln</stichwort>  
          <stichwort>Bonn</stichwort>  
     </eintrag>  
  
     <eintrag La="F">  
          <stichwort>Paris</stichwort>  
          <stichwort>Marseile</stichwort>  
     </eintrag>  
  
usw. ...  
  
</verzeichnis>  

Ich würde nun gerne per JS herausfinden, das wievielte Element "stichwort" z.B. der Eintrag "Koeln" ist; als Antwort also gerne "3" erhalten.
Nach etlichen Fehlversuchen und langer Recherche weiß ich leider immer noch nicht wie man das am besten angeht.

Ich hoffe ich konnte mein Problem verständlich machen und hoffe auch das mir jemand helfen kann.

Vielen Dank schonmal...
Gruß, Michael

  1. Hallo,

    Hier ein sehr Naiver Ansatz aber vielleicht hilft er dir etwas weiter:

    var xmlhttp = new XMLHttpRequest();  
    xmlhttp.onreadystatechange = function() {  
            if(xmlhttp.readyState == 4) {  
                handleXML(xmlhttp.responseXML);  
            }  
    };  
    xmlhttp.open("GET","xml.xml",true);  
    xmlhttp.send(null);  
      
    function handleXML(xmlDoc) {  
        var find = "Koeln";  
        var ss = xmlDoc.getElementsByTagName("stichwort");  
        for(var i=0; i<ss.length; i++) {  
            if (ss[i].childNodes[0].nodeValue == find) {  
                console.log("Found "+ find + " at position: " + (i + 1));  
            }  
        }  
    }
    

    Jeena

    1. Besten Dank für die Hilfe, der Ansatz hat super funktioniert, ist bereits eingearbeitet und ich bin somit einen großen Schritt weiter. :-)

      Gruß, Michael

  2. Hallo mist,

    Ich würde nun gerne per JS herausfinden, das wievielte Element "stichwort" z.B. der Eintrag "Koeln" ist; als Antwort also gerne "3" erhalten.

    Wenn XPath verwendet werden kann:

    count(//stichwort[.='Koeln']/preceding::stichwort) + 1

    Grüße,
    Thomas