/**
 * 得到XML文件属性的集合对象
 * @param xmlDoc XML对象
 * @param name 属性名称 如: user
 * @return 返回 Array 对象
 * Example XML:
 * <?xml version='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>
 */
function getXMLArray(xmlDoc, name) {
  var keys = name.split('.');
  var node = xmlDoc.documentElement;      // 得到根节点
  var rtn = new Array();
  var n = 0;  for(var i=0; i<keys.length; i++) {
    var childs = node.childNodes;       // 得到子节点
    var key = keys[i];
 for(var k=0; k<childs.length; k++) {      
   var child = childs[k];
   if(child.nodeName == key) {     // 判断子节点是否符合
  if(i == keys.length-1) {
          rtn[n] = child;
    n++;
  } else {
    node = child;
    break;
  }
   }
 }
  }
  return rtn;
}
/**
 * 得到由getXMLArray函数得到对象中的值
 * @param node 节点对象
 * @param name 
 * @return 返回 String 
 */
function getValue(node, name) {
  var keys = name.split('.');
  
  for(var i=0; i<keys.length; i++) {
    var childs = node.childNodes;       // 得到子节点
    var key = keys[i];
 for(var k=0; k<childs.length; k++) {      
   var child = childs[k];
   if(child.nodeName == key) {     // 判断子节点是否符合
  if(child.childNodes.length == 1) {         
    // 如果没有字节点,返回值
    return child.text;
  } else {                                 
    // 还有子节点,继续分析
    node = child;
    break;
  }
   }
 }
  }
  return "";
}// 测试:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML("<?xml version='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>");
var list = getXMLArray(xmlDoc, 'user');
for(var i=0; i<list.length; i++) {
  var obj = list[i];
  document.write(getValue(obj, 'name.cnname'));
  document.write(getValue(obj, 'age'));
  document.write('<br\/>');
}

解决方案 »

  1.   

    把xml文本存为XMLFile.xml
    并在其目录下新建一html文件    <input id="Button1" type="button" value="get" onclick="getData()" />
    String.prototype.trim = function()
    {
        return this.replace(/(^\s*)|(\s*$)/g, "");
    }function getXmlDoc()
    {
        var xmlDoc=null;
        try //Internet Explorer
        {
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        }
        catch(e)
        {
            try //Firefox, Mozilla, Opera, etc.
            {
                xmlDoc=document.implementation.createDocument("","",null);
            }
            catch(e)
            {
                alert(e.message);
                return;
            }
        }
        xmlDoc.async=false;
        return xmlDoc;
    }
    function getData()
    {
        var xmlDoc=getXmlDoc();
        xmlDoc.load("XMLFile.xml");    var ids=xmlDoc.documentElement.getElementsByTagName('ID');
        var str='';
        for(var i=0;i<ids.length;i++)
        {
            str+=ids[i].childNodes[0].nodeValue.trim()+',';
        }
        alert(str);
    }
      

  2.   

    XML: a.xml<?xml version="1.0" encoding="utf-8"?>
    <root>
      <ID>1</ID>
      <ID>2</ID>
      <ID>3</ID>
      <ID>4</ID>
    </root>
    Html:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script language="javascript" src="smAjax.js"></script>
    <script language="javascript">
    function Init()
    {
    var ai = new ajaxInfo("a.xml");
    ai.requestType = "XML";
    ai.okFunc = function()
    {
    var objs = ai.container.documentElement.getElementsByTagName("ID");
    var ary = new Array();
    for(var i=0; i<objs.length;i++)
    {
    ary.push(objs[i].text);
    }
    alert(ary.join(","));
    }
    ai.get();
    }
    </script>
    </head>
    <body onload="Init()">
    <span id="sp1"></span>
    </body>
    </html>
    用到的Js库文件地址:smajax.js【封装了Ajax操作】http://www.wirysoft.com/js/smajax.js
      

  3.   


    顺便说句,在IE里边取Xml节点值,是用的 
    节点.text
      

  4.   

    在Firefox里是用的节点.textContent