9. 读取 xml 数据 by shawl.qiu9.1 读取 xml 数据, 兼容 opera, firefox, ie9.1.1 test.xml 文件内容
<?xml version="1.0" encoding="UTF-8"?>
<body>
<element>
<title>title 1</title>
<content>content 1</content>
</element>
<element>
<title>title 2</title>
<content>content 2</content>
</element>
<element>
<title>title 3</title>
<content>content 3</content>
</element>
<element>
<title>title 4</title>
<content>content 4</content>
</element>
<element>
<title></title>
<content></content>
</element>
<element>
<title>title 6</title>
<content></content>
</element>
<element>
<title></title>
<content>content 7</content>
</element>
</body>9.1.2 html 文件内容
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>shawl.qiu template</title>
<script type="text/javascript">
//<![CDATA[
function fLoadXml(url, show){
switch(fCkDom2()){
case 1:
var xml=document.implementation.createDocument('','',null);
xml.onload = function(){show(xml, url);}
xml.load(url);
break;
case 2: 
var xml=new ActiveXObject('microsoft.xmldom');
xml.onreadystatechange=function(){
if(xml.readyState==4){
show(xml, url);
}

xml.load(url);
break;
default: document.write('unknown');
}

function fCkDom2(){
if(document.implementation&&document.implementation.createDocument)return 1;
else if(window.ActiveXObject) return 2;
else return 0;
}
}

function fShowXml(xml, url){
//alert('ok');
var elements=xml.getElementsByTagName('element');
for(var i=0; i<elements.length; i++){
//alert(elements[i].nodeName);
var div=document.createElement('div');
var br=document.createElement('br');
var hr=document.createElement('hr');

//div.appendChild(document.createTextNode(elements[i].nodeName+' '+i));
div.innerHTML=(elements[i].nodeName+' '+i).fontcolor('red');

//alert(element[i].childNodes.length);
for(var j=0; j<elements[i].childNodes.length; j++){
if(elements[i].childNodes[j].nodeType==1){
var eSub=elements[i].childNodes[j]
var p=document.createElement('p');
var content;

/*  p.appendChild(document.createTextNode(eSub.nodeName+': '+
eSub.firstChild.data)); */
try{
content=eSub.firstChild.data.fontcolor('blue');
} catch(e){
content='empty';
}
p.innerHTML=eSub.nodeName.bold()+': '+content.fontcolor('blue');
div.appendChild(p);
}
}  

div.appendChild(hr);
document.body.appendChild(div);
}
//alert(document.body.innerHTML);
}
//]]>
</script>
</head>
<body onload="fLoadXml('test.xml', fShowXml);">
</body>
</html>