tom.i2: XML DOMImplementation

Hallo

Ich wollte mal mit xml und javascript anfangen.
Dazu hab mir ein Beispiel aus dem Net gezogen und es 1:1 kopiert.

Mein Firefox 3 gibt mir beim ausführen immer den geichen Fehler und das in der Zeile "var parser = new DOMImplementation();".

Fehler: uncaught exception: [Exception... "Cannot convert WrappedNative to function"  nsresult: "0x8057000d (NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN)"  location: "JS frame :: file:///C:/test.html :: <TOP_LEVEL> :: line 20"  data: no]

Und hier das Script:
  <script type="text/javascript">
 var xml;
 xml = ""
 + "<?xml version="1.0"?>"
 + "<ROOTNODE>"
 + "<TAG1>"
 + " Hello World "
 + "</TAG1>"
 + "</ROOTNODE>";

//instantiate the W3C DOM Parser
 var parser = new DOMImplementation();
 //load the XML into the parser and get the DOMDocument
 var domDoc = parser.loadXML(xml);
 //get the root node
 var docRoot = domDoc.getDocumentElement();
 //get the first "TAG1" element
 var firstTag1 = docRoot.getElementsByTagName("TAG1").item(0);
 //display the data
 alert("|" + firstTag1.getFirstChild().getNodeValue() + "|");
  </script>

Was hab ich falsch gemacht? Das ist genau das Beispiel aus dem Net.

Danke für Tipps. tom

  1. Hallo,

    //instantiate the W3C DOM Parser
    var parser = new DOMImplementation();

    Du willst ein String in ein DOM parsen, okay. Wozu brauchst du da bitte DOMImplementation? Dazu gibt es DOMParser.

    var docRoot = domDoc.getDocumentElement();

    ??? Das ist nicht DOM. Das Wurzelelement ist ausgehend vom Document-Node über die Eigenschaft documentElement erreichbar.

    alert("|" + firstTag1.getFirstChild().getNodeValue() + "|");

    Wie kommst du auf diese Schreibweise??
    firstChild und nodeValue sind Eigenschaften, »getFirstChild« und »getNodeValue« gibt es im DOM nicht.

    Was hab ich falsch gemacht? Das ist genau das Beispiel aus dem Net.

    Da hast du wohl ganz daneben gegriffen. So gehts (siehe Link, im Firefox):

    var parser = new DOMParser();  
    var doc = parser.parseFromString(xml, "text/xml");  
    var firstTag1 = doc.getElementsByTagName("TAG1").item(0);  
    alert("|" + firstTag1.firstChild.nodeValue + "|");
    

    Mathias