shinya
18-01-2006, 14:40
Incuriosito dal thread di qualche giorno fa, mi sono documentato un pò su ajax e sto cominciando a provare questo approccio. Sono relativamente nuovo a javascript e xml dom, quindi perdonate la mia ignoranza.
Ho un file xml, questo (chiamiamolo text.xml):
<?xml version="1.0" encoding="ISO-8859-1"?>
<main>
<text1>this is a text</text1>
<text2>this is another one</text2>
<text3>and this is the last</text3>
</main>
Voglio attraversare la gerarchia dei tag e stampare a video il contenuto dei figli di <main>.
Ho buttato giù questo pezzo di codice (xhtml+javascript), ma non funziona; il codice è inteso per essere eseguito su mozilla/firefox e non su explorer (sul quale lavorerò più avanti).
<html>
<title>temp</title>
<head>
<script name="text/javascript">
<!--
var xml_dom = null;
window.onload=function() {
xml_dom = document.implementation.createDocument("", "", null);
xml_dom.load("testo.xml");
xml_dom.onload=parse_xml;
}
function parse_xml() {
var xml_parser = new DOMParser();
var xml_doc = xml_parser.parseFromString("<main>", "text/xml");
var nodes = xml_doc.documentElement.childNodes;
alert(nodes.length); // perchè dice "2"??
for (var i=0; i < nodes.length; i++) {
document.write(nodes[i].nodeValue);
}
}
//-->
</script>
</head>
<body>
</body>
</html>
Una cosa curiosa è che l'alert poco prima del for salta fuori stampando "2", quando invece i figli di <main> sono 3. Però non riesco a capire cosa sbaglio, qualche suggerimento?
Grazie.
Ho un file xml, questo (chiamiamolo text.xml):
<?xml version="1.0" encoding="ISO-8859-1"?>
<main>
<text1>this is a text</text1>
<text2>this is another one</text2>
<text3>and this is the last</text3>
</main>
Voglio attraversare la gerarchia dei tag e stampare a video il contenuto dei figli di <main>.
Ho buttato giù questo pezzo di codice (xhtml+javascript), ma non funziona; il codice è inteso per essere eseguito su mozilla/firefox e non su explorer (sul quale lavorerò più avanti).
<html>
<title>temp</title>
<head>
<script name="text/javascript">
<!--
var xml_dom = null;
window.onload=function() {
xml_dom = document.implementation.createDocument("", "", null);
xml_dom.load("testo.xml");
xml_dom.onload=parse_xml;
}
function parse_xml() {
var xml_parser = new DOMParser();
var xml_doc = xml_parser.parseFromString("<main>", "text/xml");
var nodes = xml_doc.documentElement.childNodes;
alert(nodes.length); // perchè dice "2"??
for (var i=0; i < nodes.length; i++) {
document.write(nodes[i].nodeValue);
}
}
//-->
</script>
</head>
<body>
</body>
</html>
Una cosa curiosa è che l'alert poco prima del for salta fuori stampando "2", quando invece i figli di <main> sono 3. Però non riesco a capire cosa sbaglio, qualche suggerimento?
Grazie.