Az alábbi kis javascript kóddal lehet egy xml objektumot(fájlt) letölteni és feldolgozni

Az xml dokumentum lekérése

[javascript]
function loadXMLDoc(dname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
else
{ // code for Mozilla, Firefox, Opera, etc.
if (document.implementation && document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
}
else
{
alert(‘Your browser cannot handle this script’);
}
}
xmlDoc.async=false;
xmlDoc.load(dname);
cleanWhitespace(xmlDoc); // itt törlöm a white space karaktereket
return(xmlDoc);
};
[/javascript]

lekérem az webpage xml-ből az adatokat egy tömbbe

[javascript]
function XMLtoArray(webpage)
{
var data=new Array();
try {
xmlDoc=loadXMLDoc(webpage);
var x=xmlDoc.documentElement;
//document.location.href = webpage;
for (j=0;j<x.childNodes[0].childNodes.length;j++)
{
data[x.childNodes[0].childNodes[j].getAttribute("name")] =
x.childNodes[0].childNodes[j].childNodes[0].nodeValue;
}
return data;
}
catch(err)
{
return data
};
};
[/javascript]

Amikor ezt a scriptet írtam, a firefox még nem volt képes feldolgozni az xml fájlt, ha az white space karaktereket tartalmazott. Azóta nem tudom, hogy változott-e, de íme a kód, ami törli és amire az első függvényünk hivatkozik:

[javascript]
var notWhitespace = /\S/
function cleanWhitespace(node) {
for (var x = 0; x < node.childNodes.length; x++) {
var childNode = node.childNodes[x]
if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue)))
{ // that is, if it’s a whitespace text node
node.removeChild(node.childNodes[x]);
x–;
}
if (childNode.nodeType == 1)
{ // elements can have text child nodes of their own
cleanWhitespace(childNode)
}
}
}
[/javascript]

Teszt

Legyen ez a teszt.xml fájlunk. Mint látható 2 mezőt tartalmaz: város és irányítószám.

[xml]
<?xml version=’1.0′ encoding=’UTF-8′ standalone=’yes’?>
<select>
<record id=’1′>
<field name=’varos’ type=’string’><![CDATA[Budapest]]></field>
<field name=’iraszam’ type=’int’>1131</field>
</record>
</select>
[/xml]

tesztlejük le, hogy működik-e. Tegyük be a javascript függvényeket egy xmldom.js nevű fájlba. És hozzuk létre az alábbi html fájlt (index.html):

[html]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="xmldom.js"></script>
<script type="text/javascript">
console.log(XMLtoArray("/teszt.xml"));
</script>
</head>
<body></body>
</html>
[/html]

A console.log használatához szükségünk lesz a Firefox Firebug nevű kiegészítőjére. Annak a konzolján fog megjelenni a tömb.