XML

1. 创建xml dom

//只有IE浏览器支持,并且使用activeX实现


#demo.xml

<root>

<user>Lee</user>

<url>www.baidu.com</url>

</root>


function createXMLDOM() {

var version = [

"MSXML2.DOMDocument6.0",

"MSXML2.DOMDocument2.0",

"MSXML2.DOMDocument",

]

for (var i=0; i < version.length; i++) {

try {

var xmlDom = new ActiveXObject(version[i]);

return xmlDom;

} catch(e) {

}

}

throw new Error("不支持activeX"); 

}

2. 加载xml

var xmlDom = createXMLDOM();

xmlDom.loadXML("<root>\n<user>lee</user>\n</root>");

var user = xmlDom.getElementsByTagName("user")[0];

user.tagName;  //节点标签名字

user.firstChild.NodeValue; //文本节点值

3. 加载外部文件

var xmlDom = createXMLDOM();

xmlDom.load("demo.xml");

var b = xmlDom.createElement("b");

b.appendChild(xmlDom.createTextNode("bbb"));

xmlDom.documentElement.appendChid(b);

4. 同步及异步使用xml

var xmlDom = createXMLDOM();

xmlDom.async = false;  //不建议使用同步加载

xmlDom.load("demo.xml");  //默认使用异步加载


xmlDom.onreadystatechange = function () {

//加载有4次状态变化, 1表示正在加载, 2表示已经加载完毕,3 DOM部分可以使用, 4 DOM完全可以使用

alert(xmlDom.readyState);   //这个事件比较特殊,this表示window

}

5. 解析错误

var xmlDom = createXMLDOM();

xmlDom.load("demo.xml");  

xmlDom.parseError;  //解析错误对象

xmlDom.parseError.errorCode == 0  // 0表示没有错误

6. 非IE使用XML

var xmlDom = document.implementation.createDocument("", "root", ""); param1: namespace param2: root label param3: doctype

var root = xmlDom.documentElement;


var user = xmlDom.createElement("user");

root.appendChild(user);


//非IE浏览器不支持load xml string, 但是支持load方法,从远程加载

xmlDom.async = false;  //同步加载

xmlDom.load("demo.xml");  //只有firefox和opera支持

xmlDom.getElementsByTagName("user")[0].textContent;  //IE不支持

xmlDom.onload = function() {

//加载完成后代码

}


//模拟loadXML方法

var xmlParser = new DOMParser();

var xmlStr = "<root><user>Lee</user></root>";

var xmlDom = xmlParser.parseFromString(xmlStr, "text/xml");

 

//模拟xml序列化

var serializer = new XMLSerializer();

var xmlStr = serializer.toString(xmlDom);


//解析错误

var error = xmlDom.getElementsByTagName("parseerror");

if (errors.length == 0){

alert(xmlStr);

} else {

throw new Error("错误:" + errors[0].textContent);

}

7. 跨浏览器处理XML

function getXMLDom(xmlStr) {

var xmlDom = null;

if (typeof window.DOMParser != "undefined") {

var xmlParser = new DOMParser();

xmlDom = xmlParser.parseFromString(xmlStr, "text/xml");

} else  if (typeof window.ActiveXObject != "undefined"){

var version = [

"MSXML2.DOMDocument6.0",

"MSXML2.DOMDocument2.0",

"MSXML2.DOMDocument",

]

for (var i=0; i < version.length; i++) {

try {

var xmlDom = new ActiveXObject(version[i]);

xmlDom.loadXML(xmlStr);

} catch(e) {

}

}

} else {

throw new Error("浏览器不支持XMLDom对象。");

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值