XML an richtiger Stelle ausgeben
juhuu
- xml
Hallo zusammen.
Ich versuche zur Zeit mit einer Ajax Anwendung eine Rezeptsammlung zu erstellen. Die Html-Seite sieht so aus, dass man über ein Formular verschiedene Werte, wie Zutaten, Menge, Backzeit eintragen kann. Diese Werte werden dann auch über ein oncklick in der XML Datei gespeichert. Nun möchte ich aber auch, dass die Werte der XML Datei in der Html Datei (über oder unter dem Formular) angezeigt werden. Ich würde dies gerne mit Java Script umsetzen. Mein Code sieht im Moment wie folgt aus:
function anzeigen (){
xmlhttp.open("GET","meine.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
document.write("<table border='0'>");
var x=xmlDoc.getElementsByTagName("rezept");
for (i=0;i<x.length;i++)
{
document.write("<tr><td>");
document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
document.write("</td><td>");
document.write(x[i].getElementsByTagName("zutat")[0].childNodes[0].nodeValue);
document.write("</td></tr>");
}
}
Die Daten der Kindelemente name und zutat, werden so auch auf der HTML Seite in einer Tabelle ausgegeben, allerdings unter dem footer der Seite. Eigentlich habe ich für diese Daten eine eigene section angelegt und würde die Daten gerne dort ausgeben. Nun habe ich schon viele Foren durchforstet und einiges ausprobiert, aber keine Lösung gefunden.
Hat vielleicht jemand eine Idee oder kann mir einen Denkanstoß geben? Ich möchte dieses Problem auf jeden Fall mit JavaScript und/oder PHP lösen.
Danke im Voraus.
Juhuu
Die Daten der Kindelemente name und zutat, werden so auch auf der HTML Seite in einer Tabelle ausgegeben, allerdings unter dem footer der Seite. Eigentlich habe ich für diese Daten eine eigene section angelegt und würde die Daten gerne dort ausgeben. Nun habe ich schon viele Foren durchforstet und einiges ausprobiert, aber keine Lösung gefunden.
Hat vielleicht jemand eine Idee oder kann mir einen Denkanstoß geben? Ich möchte dieses Problem auf jeden Fall mit JavaScript und/oder PHP lösen.
Das ist an sich eher ein Javascript-Problem:
Als erstes verwendest du http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id@title=document.getElementById() oder dergleichen um die Referenz auf dein Element in dem die Ausgabe stehen soll zu ermitteln.
Dann benutzt du http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=document.createElement() um alle Elemente für die Ausgabe zu erzeugen.
Am Ende hängst du sie an das ermittelte Element via http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=element.appendChild() an.
MfG
bubble
Super! Danke!
Jetzt hab ich folgendes:
var tabelle = document.createElement("table");
document.getElementsByTagName("section")[1].appendChild(tabelle);
var tr = document.createElement("tr");
tabelle.appendChild(tr);
var td = document.createElement("td");
var txt = xmlDoc.getElementsByTagName("rezepte");
td.appendChild(txt);
tr.appendChild(td);
}
Nun komm ich auf jeden Fall in an die richtige Stelle. Allerdings kann ich nun nicht mehr auf die Daten der XML zugreife. Diese wirft er mir nun nicht mehr auf der Seite aus.
Wenn ich statt
"var txt = xmlDoc.getElementsByTagName("rezepte");"
createTextNode
einfüge, sieht man, dass der Rest der Funktion funktioniert.
Setze ich
"var txt = xmlDoc.getElementsByTagName("rezeptname")[0];",
wirft er mir an der richtgen Stelle den ersten Wert von Rezeptname aus.
Kann ich das nun mit einer for Schleife lösen? Und wenn ja, warum funktioniert die folgende Schleife nicht?
for (i=0;i<txt.length;i++)
document.craeteElement(txt[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
MfG
Juhuu