molily: XML über Ajax in Html/DIV nachträglich einbauen

Beitrag lesen

  1. den XML parsen um daraus einige Informationen in Javascript Variablen abspeichern.

Geparst ist das XML-Dokument schon - nämlich in eine DOM-Struktur unter responseXML.

Dir bleibt nichts anders übrig, als damit zu arbeiten. Wenn dir das nicht gefällt, was ich gut verstehen kann, solltest du zu einem geeigneterem Format wie JSON umsteigen. Diese Daten lassen sich in JavaScript viel einfacher verarbeiten. XML ist da m.E.n. nur in seltenen Fällen sinnvoll.

Gibt es für 1) einen einfacheren XML-Parser mit dem ich an meine Informationen innerhalb des XML Objekts rankomme. Mit DOM Zugriffe tue ich mir sehr schwer, oder eine ausführliche Doku dazu würde auch helfen.

Für XML-Dokumente gilt im Grunde das, was man auch von HTML-Dokumenten kennt.
Z.B. <http://de.selfhtml.org/javascript/objekte/node.htm@title=die Node-Eigenschaften und -Methoden> und Methoden wie http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName.

Mal ein Beispiel:

var xmlDoc = xmlhttprequest.responseXML;  
  
// Attribut beim XRF-Element (Wurzelelement) auslesen  
var xrfElement = xmlDoc.documentElement;  
alert( xrfElement.getAttribute('r') ); // da hast du ja viele von  
  
// Alle A-Elemente in einen Array überführen:  
var aData = [];  
var aElements = xmlDoc.getElementsByTagName('A');  
for (var i = 0, aEl; aEl = aElements[i]; i++) {  
   // Object (Hash) mit den Attributwerten erstellen und an den Array anhängen  
   aData.push({  
      k : aEl.getAttribute('k'),  
      n : aEl.getAttribute('n'),  
      v : aEl.getAttribute('v'),  
   });  
}  
  
// Auf Array zugreifen, v-Eigenschaft auslesen  
alert( aData[0].v );

Zur 2) wie wandle ich XML in einer Tabelle um so das ich anschließend alles innerhalb von DIV einbauen kann (mit innerHTML).

Im Prinzip wie oben die Elemente heraussuchen, mit einer Schleife durchlaufen, die Daten herausholen (z.B. mit getAttribute).

Anhand dessen kannst du dann einen String mit HTML-Code zusammenbauen. Den schreibst du letztlich mit innerHTML in ein Element.

var htmlString = '<table> <caption>A-Elemente</caption> <thead> <tr> <th>k</th> <th>n</th> </tr> </thead> </tbody>';

var aElements = xmlDoc.getElementsByTagName('A');  
for (var i = 0, aEl; aEl = aElements[i]; i++) {  
   // Code für Tabellenzeile generieren und anhängen  
   htmlString += '<tr>' +  
      '<td>' + aEl.getAttribute('k') + '</td>' +  
      '<td>' + aEl.getAttribute('n') + '</td>' +  
      '<td>' + aEl.getAttribute('v') + '</td>' +  
      '</tr>';  
}  
htmlString += '</tbody></table>';  
  
document.getElementById('beispielID').innerHTML = htmlString;

Mathias