XML richtig verarbeiten
Sören
- javascript
Hi,
ich habe eine XML Datei:
<?xml version="1.0"?>
<gc09>
<head>
<name>Name</name>
<plz>Postleitzahl</plz>
<wohnort>Wohnort</wohnort>
<abreiseort>Abreisebahnhof/-ort</abreiseort>
<anreise>Anreisedatum</anreise>
<abreise>Abreisedatum</abreise>
</head>
<user>
<name>[Name]</name>
<plz>[PLZ]</plz>
<wohnort>[Wohnort]</wohnort>
<abreiseort>[Abfahrtsort]</abreiseort>
<anreise>[Anreisedatum]</anreise>
<abreise>[Abreisedatum]</abreise>
</user>
</gc09>
und eine dazugehörige HTML-Seite:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mitfahrer zur GC 09</title>
</head>
<body>
<script type="text/javascript">
[code lang=javascript]o = null;
if(window.XMLHttpRequest)
{o = new XMLHttpRequest();}
else if(window.ActiveXObject)
{
try
{o = new ActiveXObject('Msxml2.XMLHTTP');}
catch(e1)
{try
{o = new ActiveXObject('Microsoft.XMLHTTP');}
catch(e2)
{}
}
}
o.open('GET','data.xml',false) //Laden der XML-Datei
o.send(null);
x = o.responseXML.documentElement;
document.write('<table style="border:thin solid #000;>');
for (i=0;i<=x.childNodes.length;i++)
{
document.write('<tr>');
for (j=0;j<x.childNodes.childNodes.length;j++)
{
document.write('<td>'+x.childNodes(i).childNodes(i).data+'</td>');
}
document.write('</tr>');
}
document.write('</table>');
</script>
</body>
</html>
[/code]
In der XML-Datei stehen beliebig viele <user> drin.
Mein Problem ist, das mir die Tabelle nicht angezeigt wird. In der Fehlerkonsole wird mir gesagt das "x.childNodes.childNodes.length" nicht definiert ist.
Außerdem wird mir bei "x.firstChild.nodeName" "#Text" ausgegeben und nicht der Tag-Name.
Wo liegt mein Fehler? Die ganzen Tutorials u.ä. die ich bei Google gefunden haben, waren da leider auch nicht hilfreich.
Grüße aus Japan
Sören
Hi,
Außerdem wird mir bei "x.firstChild.nodeName" "#Text" ausgegeben und nicht der Tag-Name.
Vernuenftige Browsern betrachten auch den Whitespace zwischen Tags als Nodes - Textnodes eben.
MfG ChrisB
Habs inzwischen herausgefunden woran es liegt.
Es muss document.write('<td>'+x.childNodes[i].childNodes[j].firstChild.data+'</td>');
heißen.
Grüße aus Japan
Sören