Michael: XML datei mit JavaScript auslesen

Hallo Zusammen,

ich versuche seit ein paar Tagen eine einfach xml-datei mittels JavaScript zu durchsuchen und auszugeben.

1. Kann mir jemand evtl. einen guten Link empfehlen zum Thema XML-Datenbank nach bestimmten  Schlagwörtern durchsuchen und dann die entprechende Knoten ausgeben...

2. Habe ich folgende Konstruktion:

XML-File:
<?xml version='1.0' encoding='utf-8'?>
<cocktails>
 <cock1>
  <name>Caipi</name>
  <inhalt>Cachaca</inhalt>
 </cock1>
 <cock2>
  <name>MaiTai</name>
  <inhalt>Vodka, Rum</inhalt>
 </cock2>
</cocktails>

JAVA_script:
var ausgabe = xmldoc.getElementsByTagName('cocktails').item(0).getElementsByTagName('cock1').item(0)getElementsByTagName('name').item(0);

---> Ich würde gerne auf den Inhalt von "name" also Caipi zugreifen... Die Ausgabe liefert mir allerdings unter Firefox: [object Element] und sonst nichts.

Vieleicht kann mir jemand ein wenig auf die Sprünge helfen...

THX

Michael

  1. Hi!
    Also ich weiß nicht, ob das so geht, wie du es gemacht hast und ob dort nur ein kleiner Fehler drin ist.
    Aber mit diesem Tutorial kannst du es lernen.
    szia, Lukas

  2. Hallo Michael,

    Vieleicht kann mir jemand ein wenig auf die Sprünge helfen...

    Du möchtest den Textinhalt dieses Objektes ausgeben lassen.

    data

    Gruß Gernot

  3. Tach Michael,

    JAVA_script:
    var ausgabe = xmldoc.getElementsByTagName('cocktails').item(0).getElementsByTagName('cock1').item(0)getElementsByTagName('name').item(0);

    ---> Ich würde gerne auf den Inhalt von "name" also Caipi zugreifen... Die Ausgabe liefert mir allerdings unter Firefox: [object Element] und sonst nichts.

    Der Zugriff auf den gesuchten Elementinhalt kann unterschiedlich erfolgen, u. a. so:

      
    var ausgabe = xmldoc.getElementsByTagName('cocktails').item(0).getElementsByTagName('cock1').item(0).getElementsByTagName('name').item(0).firstChild.nodeValue;  
      
    var ausgabe = xmldoc.getElementsByTagName('cock1').item(0).firstChild.firstChild.nodeValue;  
      
    var ausgabe = xmldoc.getElementsByTagName('name').item(0).firstChild.nodeValue;
    

    Statt nodeValue kann bei Textknoten auch data verwendet werden.

    Ansonsten ist auch die genannte XML-Struktur nicht optimal. Beim 100. Cocktail wäre wohl ein Element cock100 fällig, d. h. die spätere Abfrage von Daten wird unnötig verkompliziert. Besser wäre:

      
    <?xml version='1.0' encoding='utf-8'?>  
    <cocktails>  
     <cocktail nr="1">  
      <name>Caipi</name>  
      <inhalt>Cachaca</inhalt>  
     </cocktail>  
     <cocktail nr="2">  
      <name>MaiTai</name>  
      <inhalt>Vodka, Rum</inhalt>  
     </cocktail>  
    </cocktails>
    

    Das Attribut nr ist auch nicht unbedingt nötig, denn via DOM lässt sich die Position von cocktail-Elementen auch ermitteln.

    Man liest sich,
    svg4you

  4. @svg4you, Gernot Back, Lukas Böhm

    Vielen herzlichen Dank!
    Mein erster Hilferuf hier und ihr habt mir prompt weitergeholfen.

    Vor allem der Tipp mit den Attributen... hatte das zwar auch schon probiert aber irgendwie nicht geschafft auf das Attribut zuzugreifen. Denke mal das werd ich jetzt hin bekommen.
    Danke.

    Beste Grüße,
    Michael