XML-Datei mit HTML-Tags
Anja
- javascript
0 molily
hallo,
folgendes Problem: Ich möchte per JS eine XML-Datei mit HTML-Tags einlesen. Was muss ich tun, damit mir das folgende Objekt korrekt angezeigt wird?
<text><![CDATA[<b>hello</b>]]>Mozilla</text>
Z.Z. sieht die Ausgabe folgendermaßen aus:
<b>hello</b>
Gruß Anja
Hier der gesamte Code:
XML-DATEI
<?xml version="1.0" encoding="UTF-8"?>
<links>
<link id="1">
<text><![CDATA[<b>hello</b>]]>Mozilla</text>
<url>http://www.mozilla.com/</url>
</link>
<link id="2">
<text>Microsoft</text>
<url>http://www.microsoft.com/</url>
</link>
<link id="3">
<text>Opera</text>
<url>http://www.opera.com/</url>
</link>
</links>
HTML-DATEI
<html>
<head>
<title>AJAX</title>
<script type="text/javascript"><!--
var http = null;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
window.onload = function() {
if (http != null) {
http.open("GET", "links.xml", true);
http.onreadystatechange = ausgeben;
http.send(null);
}
}
function ausgeben() {
if (http.readyState == 4) {
var liste = document.getElementById("Liste");
var daten = http.responseXML;
var ergebnisse = daten.getElementsByTagName("link");
for (var i = 0; i < ergebnisse.length; i++) {
var name, url;
var datum = ergebnisse[i];
for (var j = 0; j < datum.childNodes.length; j++) {
with (datum.childNodes[j]) {
if (nodeName == "text") {
name = firstChild.nodeValue;
} else if (nodeName == "url") {
url = firstChild.nodeValue;
}
}
}
var p = document.createElement("p");
var a = document.createElement("a");
a.setAttribute("href", url);
var txt = document.createTextNode(name);
a.appendChild(txt);
p.appendChild(a);
liste.appendChild(p);
}
}
}
//--></script>
</head>
<body>
<ul id="Liste"></ul>
</body>
</html>
Hallo,
<text><![CDATA[<b>hello</b>]]>Mozilla</text>
Z.Z. sieht die Ausgabe folgendermaßen aus:
<b>hello</b>
var p = document.createElement("p");
var a = document.createElement("a");
a.setAttribute("href", url);
var txt = document.createTextNode(name);
Verwende innerHTML anstatt einen Textknoten zu erstellen. Ein Textknoten ist immer nur ein Textknoten, wenn darin <b> steht, dann wird der Browser es nicht als HTML parsen.
a.innerHTML = name;
Mathias