XML DOMImplementation
tom.i2
- javascript
2 molily
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
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