复制代码 代码如下:/**
*得到XML文件属性的集合对象
*@paramxmlDocXML对象
*@paramname属性名称如:user
*@return返回Array对象
*ExampleXML:
*<?xmlversion='1.0'encoding='utf-8'?>
*<ekuy>
*<user>
*<name>
*<cnname>小猪</cnname>
*</name>
*<age>27</age>
*</user>
*<user>
*<name>
*<cnname>小霞</cnname>
*</name>
*<age>26</age>
*</user>
*</ekuy>
*/
functiongetXMLArray(xmlDoc,name){
varkeys=name.split('.');
varnode=xmlDoc.documentElement;//得到根节点
varrtn=newArray();
varn=0;
for(vari=0;i<keys.length;i++){
varchilds=node.childNodes;//得到子节点
varkey=keys[i];
for(vark=0;k<childs.length;k++){
varchild=childs[k];
if(child.nodeName==key){//判断子节点是否符合
if(i==keys.length-1){
rtn[n]=child;
n++;
}else{
node=child;
break;
}
}
}
}
returnrtn;
}
/**
*得到由getXMLArray函数得到对象中的值
*@paramnode节点对象
*@paramname
*@return返回String
*/
functiongetValue(node,name){
varkeys=name.split('.');
for(vari=0;i<keys.length;i++){
varchilds=node.childNodes;//得到子节点
varkey=keys[i];
for(vark=0;k<childs.length;k++){
varchild=childs[k];
if(child.nodeName==key){//判断子节点是否符合
if(child.childNodes.length==1){
//如果没有字节点,返回值
returnchild.text;
}else{
//还有子节点,继续分析
node=child;
break;
}
}
}
}
return"";
}
//测试:
varxmlDoc=newActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML("<?xmlversion='1.0'encoding='utf-8'?><ekuy><user><name><cnname>小猪</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>");
varlist=getXMLArray(xmlDoc,'user');
for(vari=0;i<list.length;i++){
varobj=list[i];
document.write(getValue(obj,'name.cnname'));
document.write(getValue(obj,'age'));
document.write('<br/>');
}