递规法遍历xml树的属性和节点值,并将其批量放入数组

原创 2003年10月02日 01:14:00

递规法遍历xml树的属性和节点值

注: function xml2javascript(xml_name, data) //参数xml_name: xml文档文件名,data:存储数据的数组对象名 转换成功后调用数组,基本按照dom的调用方法,只不过将'()'转换为'[]'

<SCRIPT LANGUAGE="JavaScript">

/**
 * 递归法读xml所有数据(包括属性值)放入数组
 *
 * MEMBER >>
 *
 *
 * RETURN >>
 *
 *
 * 创建者: 创建时间:
 *
 * 编写者:wyc 编写时间:02-12-7
 *
 * 修改者: 修改时间: 新增功能:
 *
 */
function xml2javascript(xml_name, data)
{
 // +----------------------------------------------------+
 // | 建立MSXML.DOMDocument    |
 var xml_doc = new ActiveXObject("MSXML.DOMDocument");
 xml_doc.async = false;
 xml_doc.load(xml_name);
 // +----------------------------------------------------+
 var obj      = xml_doc.documentElement;
 var data_obj = data;
 eval(data_obj + "=new Object();");
 _getXml(obj, data_obj)
}

/**
 * 内部函数
 *
 * MEMBER >>
 *
 *
 * RETURN >>
 *
 *
 * 创建者: 创建时间:
 *
 * 编写者:wyc 编写时间:02-12-7
 *
 * 修改者: 修改时间: 新增功能:
 *
 */
function _getXml(obj, data_obj)
{
 var node_count = obj.childNodes.length;
 if (node_count == 0) { //如果没有子节点,那么返回
  return;
 }
 eval(data_obj + ".childNodes=new Array();");
 eval(data_obj + "._childNodes=new Array();");
 for (var i=0; i<node_count; i++) {
  if (obj.childNodes(i).nodeName == '#text') {
   eval(data_obj + ".text=obj.text;"); //元素名称
   return;
  }
  if (obj.childNodes(i).nodeName == '#cdata-section') {
   eval(data_obj + ".text= obj.text;");
   return;
  }
  eval(data_obj + ".childNodes[i]=new Object();"); //新建一个元素
  eval(data_obj + ".childNodes[i].nodeName=obj.childNodes(i).nodeName;"); //元素名称
  
  eval(data_obj + "._childNodes[obj.childNodes(i).nodeName]=i;"); //元素缓存

  //属性
  var attribute_count = obj.childNodes(i).attributes.length;
  eval(data_obj + ".childNodes[i].attributes=new Array();"); //属性数组
  eval(data_obj + ".childNodes[i]._attributes=new Array();"); //属性缓存数组
  for (var j=0; j<attribute_count; j++) {
   eval(data_obj + ".childNodes[i].attributes[j]=new Object();");
   eval(data_obj + ".childNodes[i].attributes[j].nodeName=obj.childNodes(i).attributes(j).nodeName;");
   eval(data_obj + ".childNodes[i].attributes[j].text=obj.childNodes(i).attributes(j).text;");
   
   eval(data_obj + ".childNodes[i]._attributes[obj.childNodes(i).attributes(j).nodeName]=j;");
  }
  
  var obj_      = obj.childNodes(i);
  var data_obj_ = data_obj + ".childNodes[" + i + "]";
  _getXml(obj_, data_obj_);
 }
}

//调用示例
xml2javascript('message.xml', 'aaa');
alert(aaa.childNodes[0].childNodes[1].nodeName);
alert(aaa.childNodes[0].childNodes[1].text);
//alert(aaa.childNodes[0].childNodes[1].attributes[0].text);

</SCRIPT>

Dom4j解析xml文件-递归遍历所有节点和属性

引言        Dom4j是java中常用读取xml文件的工具,就方便性和性能方面,一定程度要优于JDK中Domcument和SAX解析的,感兴趣的童鞋可以看看这篇文章 java解析XML的四种方...
  • chenleixing
  • chenleixing
  • 2015年03月17日 22:00
  • 55941

C# 关于XML遍历新增节点,修改属性小例

XML样例: CS从入门到精通 候捷 58.3 CS从入门到精通 小六 58.3 CS从入门到精通 大黄 58.3 测试代码...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2014年01月08日 09:46
  • 1255

利用dom4j解析xml文档,自动遍历节点属性

package st.xml.utils; import java.util.ArrayList; import java.util.Iterator; import java.uti...
  • z69183787
  • z69183787
  • 2013年11月05日 14:40
  • 5842

使用DOM解析XML的文件属性名和属性值、节点名和节点值

一、新建一个demo.xml的文件: 放学后 cmirssd 2010 25 你的孤独,虽败犹荣 刘同 2...
  • u014042146
  • u014042146
  • 2015年09月15日 10:34
  • 6600

sql遍历xml,遍历节点并遍历节点值,xm节点属性数据转换成表

--===============================遍历获取xml指定节点和节点包含属性的值=========== declare @GD_list xml; set @GD_list=...
  • zhongheijituan
  • zhongheijituan
  • 2014年07月19日 14:09
  • 1699

RapidXml 读取文件并遍历节点的所有属性

RapidXml 试图成为最快的 XML DOM 解析工具包,同时保证解析结果的可用性、可移植性以及与 W3C 标准的兼容性。RapidXml 使用 C++ 编写,因此在操作同一数据时,其解析速度接近...
  • hellokandy
  • hellokandy
  • 2017年02月24日 11:30
  • 735

oracle解析xml,带命令空间的节点获取

在xml里有两个解析xml的函数extract和extractVALUE,这两个函数可以带两个参数,也可以带上个参数,第三个参数是命令空间,对于namespace_string,刚开始我也很疑惑,然后...
  • liu22985342
  • liu22985342
  • 2017年01月22日 17:23
  • 1435

java中dom4j解析xml文件怎么获取节点属性

java中dom4j解析xml文件怎么获取节点属性 2010-6-9 10:15 dom4j中,使用Element.attributes方法可以获取到节点的属性,而使用elements则可以获...
  • qq_25214695
  • qq_25214695
  • 2016年12月06日 16:54
  • 4600

Dom4j解析xml文件-操作节点和属性及写入其他xml文件

引言        上一篇把Dom4j遍历xml文件的所有节点和属性分享了一下,这篇我就简单明了的分享一下,对xml文件的各个节点及属性进行增、删、改的操作并写入新的或者保存到xml文件中,下边的代码...
  • chenleixing
  • chenleixing
  • 2015年03月17日 22:46
  • 19144

Java使用DOM解析XML的文件属性名和属性值、节点名和节点值

Java使用DOM解析XML的文件属性名和属性值、节点名和节点值
  • lz527657138
  • lz527657138
  • 2017年04月24日 13:05
  • 4163
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:递规法遍历xml树的属性和节点值,并将其批量放入数组
举报原因:
原因补充:

(最多只允许输入30个字)