xml指可扩展标记语言(EXtensible Markup Language)类似于标记语言html,设计宗旨是传输数据,而非展示数据
js来读取xml
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
alert(11);
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
alert(22);
}
xmlhttp.open("GET","demo.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
console.log(xmlDoc.getElementsByTagName("user")[0].firstChild.nodeValue);
在demo.xml中的代码
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<user>赵文娟</user>
</root>
js向xml文件中增加节点
var aa=xmlDoc.createElement('aa');
var root=xmlDoc.documentElement;
root.appendChild(aa);
var nodeText=xmlDoc.createTextNode("bb");
aa.appendChild(nodeText);
所有的标签都是自定义的
同步加载:你正在和第一个人打电话,第二个人必须等待第一个人打完之后,才可以打进来,
异步加载:在qq上聊天,以正在和一个人聊天的时候,其他的人也可以和你聊天。
服务器端默认使用的是异步加载
如果为其指定为同步的话,可能会在IE里边造成假死的状态
实现DOM2级浏览器
实现了DOM2级的浏览器有chorm,火狐,IE8+
创建xmlDOM 并且创建了xmlDOM
var xmlDOM
=document.implementation.createDocument('','root',null);
其中的3个参数
1、命名空间 2、根标签 3、文档声明
DOM2级的XMLDOM对象只支持load方法加载同一台服务器上的xml文件,不支持将xml的字符串直接载入
但是只有在火狐浏览器中DOM级的XMLDOM才能支持load方法
同步方式来加载demo.xml
var xmlDOM=document.implementation.createDocument('','root',null); //创建smlDOM 并且创建了xmlDOM
xmlDOM.async=false; //指定为同步加载
//使用标准DOM为其创建节点
xmlDOM.load('demo.xml');
alert(xmlDOM.getElementsByTagName('user')[0].firstChild.nodeValue)
异步方式 demo.xml
var xmlDOM=document.implementation.createDocument('','root',null); //创建smlDOM 并且创建了xmlDOM
xmlDOM.async=true; //指定为同步加载
addEvent(xmlDOM,'load',function () {
alert(this.getElementsByTagName('user')[0].firstChild.nodeValue)
})
xmlDOM.load('demo.xml');
但是这样的DOM2级别的xmlDOM有两个缺点:
1、不能使用字符串来创建xml
2、不能使用xmlDOM.xml来使xmlDOM序列化
所以使用DOMParser来实现
var xmlParser=new DOMParser();
var xmlstr="<root>\n\t<user>赵文娟</user>\n</root>"
var xmlDom=xmlParser.parseFromString(xmlstr,"text/xml");
var ser=new XMLSerializer();
var xml=ser.serializeToString(xmlDom);
alert(xml);
1、使用了DOMParser来实现字符串创建xml
2、使用XMLSerializer来模拟xml的序列化