JavaScript之XML总结

      之前我们已经学习过刘伟老师讲的XML视频,对XML有了一定的了解。现在JavaScript视频中再次对它进行了讲解,只不过所针对的内容不同。先前讲解的是XML的基本概念,对它的元素、节点、应用等问题进行详细说明。而此次的主要内容是实现XML的动态操作。

    使用JavaScript加载XML主要有两种方式:内部加载和外部加载。(注:下述实现过程,仅在IE中可以实现)

       内部加载:

function createXMLDOM(){
  var version=['MSXML2.DOMDocument6.0',
               'MSXML2.DOMDocument3.0',
               'MSXML2.DOMDocument'];
			   
  for (var i=0;i<version.length;i++){
    try{
	  //对于无法进行判断的条件,可以使用try-catch语句
	  var xmlDom=new ActiveXObject(version[i]);
	  return xmlDom;
	}catch(e){
	  //跳过错误	  
	}	
  }
  throw new Error('您的系统或者浏览器不支持MSXML库');
}

var xmlDom=createXMLDOM();
xmlDom.loadXML('<root>
<user>wang</user>
</root>');//加载XML字符串
alert(xmlDom.xml);//序列化XML,打印字符串
var user=xmlDom.getElementsByTagName('user')[0];
alert(user.nodeType);//1
alert(user.tagName);//user
alert(user.firstChild.nodeValue);//wang

   其效果如下:


   

   外部加载:

function createXMLDOM(){
  var version=['MSXML2.DOMDocument6.0',
               'MSXML2.DOMDocument3.0',
               'MSXML2.DOMDocument'];
			   
  for (var i=0;i<version.length;i++){
    try{
	  //对于无法进行判断的条件,可以使用try-catch语句
	  var xmlDom=new ActiveXObject(version[i]);
	  return xmlDom;
	}catch(e){
	  //跳过错误	  
	}	
  }
  throw new Error('您的系统或者浏览器不支持MSXML库');
}
var xmlDom=createXMLDOM();
xmlDom.load('demo.xml');//加载外部XML文件
alert(xmlDom.xml);//序列化XML,打印字符串
var user=xmlDom.getElementsByTagName('user')[0];
alert(user.nodeType);//1 表示节点类型:1是元素节点
alert(user.tagName);//user
alert(user.firstChild.nodeValue);//wang


    加载的外部文件demo.xml:
<root>
  <user>wang</user>
  <email>wangpengbo92@163.com</email>
  <url>http://baidu.com</url>
</root>

    其效果如下:


   

   动态添加节点:

function createXMLDOM(){
  var version=['MSXML2.DOMDocument6.0',
               'MSXML2.DOMDocument3.0',
               'MSXML2.DOMDocument'];
			   
  for (var i=0;i<version.length;i++){
    try{
	  //对于无法进行判断的条件,可以使用try-catch语句
	  var xmlDom=new ActiveXObject(version[i]);
	  return xmlDom;
	}catch(e){
	  //跳过错误	  
	}	
  }
  throw new Error('您的系统或者浏览器不支持MSXML库');
}
var xmlDom=createXMLDOM();
xmlDom.load('demo.xml');//加载外部XML文件
//添加节点
var bbb=xmlDom.createElement('bbb');
var root=xmlDom.documentElement;
root.appendChild(bbb);
var bbbText=xmlDom.createTextNode('kkk');
bbb.appendChild(bbbText);
alert(xmlDom.xml);

    效果如下:



    但是,动态添加节点的过程相对来说比较麻烦,如果是添加单一节点,此法还可以使用。但如果添加的节点数过多时,就显得麻烦了。个人感觉使用外部加载的方法比较适合。

   

原文地址:https://www.cnblogs.com/victor-grace/p/7253792.html