浅谈如何用Javascript操作XML

开发 后端
简要介绍一下用Javascript操作XML,JavaScript操作XML是通过XML DOM来完成的。XML DOM定义了所有XML元素的对象和属性,以及访问它们的方法(接口)。

文中尽量用上所有的操作和属性,以做示范。

大多数浏览器都有读取和操作 XML 的内建 XML 解析器。解析器(XML Parser)把 XML 转换为 JavaScript 可访问的对象。

解析器把XML 载入内存,然后把它转换为可通过JavaScript 访问的 XML DOM 对象。微软的XML解析器与其他浏览器中的解析器之间,存在一些差异。微软的解析器支持 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都包含遍历 XML 树、访问插入及删除节点(元素)及其属性的函数。

XML DOM 把XML文档视为一种树结构。这种树结构被称为节点树。

可通过这棵树访问所有节点。可以修改或删除它们的内容,也可以创建新的元素。

这颗节点树展示了节点的集合,以及它们之间的联系。这棵树从根节点开始,然后在树的最低层级向文本节点长出枝条:

  1. script language="JavaScript"> 
  2. <!--  
  3. var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")   
  4. //加载文档  
  5. //doc.load("b.xml");  
  6. //创建文件头  
  7. var p = doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");  
  8.     //添加文件头  
  9.     doc.appendChild(p);  
  10. //用于直接加载时获得根接点  
  11. //var root = doc.documentElement;  
  12. //两种方式创建根接点  
  13. //    var root = doc.createElement("students");  
  14.     var root = doc.createNode(1,"students","");  
  15.     //创建子接点  
  16.     var n = doc.createNode(1,"ttyp","");  
  17.         //指定子接点文本  
  18.         //n.text = " this is a test";      
  19.     //创建孙接点  
  20.     var o = doc.createElement("sex");  
  21.         o.text = "男";    //指定其文本  
  22.     //创建属性  
  23.     var r = doc.createAttribute("id");  
  24.         r.value="test";        //添加属性  
  25.         n.setAttributeNode(r);  
  26.     //创建第二个属性      
  27.     var r1 = doc.createAttribute("class");  
  28.         r1.value="tt";          
  29.         //添加属性  
  30.         n.setAttributeNode(r1);  
  31.         //删除第二个属性  
  32.         n.removeAttribute("class");  
  33.         //添加孙接点  
  34.         n.appendChild(o);  
  35.         //添加文本接点  
  36.         n.appendChild(doc.createTextNode("this is a text node."));  
  37.         //添加注释  
  38.         n.appendChild(doc.createComment("this is a comment\n"));     
  39.         //添加子接点  
  40.         root.appendChild(n);     
  41.     //复制接点  
  42.     var m = n.cloneNode(true);  
  43.         root.appendChild(m);          
  44.         //删除接点  
  45.         root.removeChild(root.childNodes(0));  
  46.     //创建数据段  
  47.     var c = doc.createCDATASection("this is a cdata");  
  48.         c.text = "hi,cdata";  
  49.         //添加数据段  
  50.         root.appendChild(c);      
  51.     //添加根接点  
  52.     doc.appendChild(root);  
  53.     //查找接点  
  54.     var a = doc.getElementsByTagName("ttyp");  
  55.     //var a = doc.selectNodes("//ttyp");  
  56.     //显示改接点的属性  
  57.     for(var i0;i<a.length;i++)  
  58.     {  
  59.         alert(a[i].xml);  
  60.         for(var j=0;j<a[i].attributes.length;j++)  
  61.         {  
  62.             alert(a[i].attributes[j].name);  
  63.         }  
  64.     }  
  65.     //修改节点,利用XPATH定位节点  
  66.     var b = doc.selectSingleNode("//ttyp/sex");  
  67.     b.text = "女";  
  68.     //alert(doc.xml);  
  69.     //XML保存(需要在服务端,客户端用FSO)  
  70.     //doc.save();      
  71.     //查看根接点XML  
  72.     if(n)  
  73.     {  
  74.         alert(n.ownerDocument.xml);  
  75.     }  
  76. //--> 
  77. </script> 

【编辑推荐】

  1. JavaScript中关于Cookie的详细介绍
  2. JavaScript中confirm,alert,prompt的用法
  3. 基于JavaScript的REST客户端框架
  4. 如何优化JavaScript脚本的性能
  5. 用Javascript连接Access数据库的方法
责任编辑:张燕妮 来源: cnblogs
相关推荐

2009-06-26 15:55:29

Javascript+

2009-06-24 16:26:17

MyEclipse

2011-08-02 08:48:58

Visual Stud

2009-07-17 17:41:25

JDBC连接SQL S

2009-05-04 10:25:36

XML.NET数据

2011-07-13 14:02:42

OracleExcel

2011-06-03 10:06:57

MongoDB

2017-10-27 22:03:35

javascrip

2021-11-29 08:50:57

Javascript存储函数

2009-08-17 15:34:58

C#创建XML

2009-07-14 11:51:00

XML压缩

2010-07-30 12:56:02

Flex调用JavaS

2009-04-14 09:24:40

OracleXML导出

2009-06-10 21:51:42

JavaScript XMLFirefox

2021-11-16 14:25:38

JavaScript前端

2009-09-14 15:45:28

LINQ删除XML节点

2009-09-08 16:55:01

Linq实现XML转换

2011-07-22 08:43:08

XML

2022-09-04 15:40:39

JavaScrip状态模式软件

2009-08-18 17:08:50

C#编写XML文档
点赞
收藏

51CTO技术栈公众号