Sören: XML richtig verarbeiten

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

  1. 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

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. 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