javascript读取xml

  

复制代码 代码如下:
/**

  * 得到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\/>');

  }