解决之道

个人日记
posts - 33, comments - 1, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

[导入]javascript读取xml

Posted on 2008-07-31 14:53 阅读(118) 评论(0)  编辑  收藏
/**
 * 得到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\/> ' );
}


kelven 2006-12-25 17:12 发表评论

文章来源:http://www.blogjava.net/zhangrenquan/articles/89946.html

只有注册用户登录后才能发表评论。


网站导航: