可以使用标准DOM操作。
function createXMLDOM(){
var version = [
'MSXML2.0DOMDocument6.0',
'MSXML2.0DOMDocument3.0',
'MSXML2.0DOMDocument'
];
for (var i = 0; i < version.length; i++) {
try{
var xmlDom = new ActiveXObject(version[i]);
return xmlDom;
}catch(e){
//跳过 有一个错了
}
}
throw new Error("您的系统或者浏览器不支持XML库"); //所有的都错了
}
xmlDom.loadXML('
xmlDom.load('demo.xml'); //其他的操作一样,用xmlDom.
xmlDom.xml //alert(xmlDom.xml);
var user = xmlDom.getElementsByTagName('user')[0]; //alert(user);
user.nodeType;
user.nodeName;
user.firstChild.nodeValue;
var b = xmlDom.createElement('bbb');
var root = xmlDom.documentElement;
root.appendChild(b);
var bText = xmlDom.createTextNode('kkk'); b.appendChild(bText);
无法跨域加载。
无法读取打印文件内容。
1、在服务器端,使用的异步加载,load()还没有加载完毕,就去打印。
xmlDom.async = false; //同步是false,异步是true
使用同步请求超时,容易造成浏览器假死。
推荐使用异步,但是无法加载打印。使用 onreadystatechange 这个事件需写在load前面,意图先载入事件.
有四种状态:
用readyState可以获取就绪状态值。
xmlDom.onreadystatechange = function(){
if(xmlDom.readyState == 4)
alert(xmlDom.xml);
}
}
xmlDom.load('demo.xml');
xmlDom.onreadystatechange = function(){
if(xmlDom.readyState == 4)
if(xmlDom.parseError.eerorCode == 0){
alert(xmlDom.xml);
}else{
throw new Error('错误行号:'+xmlDom.parseError.line+
'\n错误代码:'+xmlDom.parseError.errorCode+
'\n错误解释:'+xmlDom.parseError.reason);
}
}
}
xmlDom.load('demo.xml');
//第一个参数命名空间,第二个参数xml根标签,第三个参数文档申明null
var xmlDom = document.implementation.createDocument('','root',''); alert(xmlDom);
DOM2级支持基本DOM操作创建xml,但是不支持loadXML()方法,无法简易的通过字符串创建xml文档。 有load()方法,也不能跨域加载。
xmlDom.load('demo.xml');
没有xmlDom.xml序列化,DOM2没有xml序列化方法
获取标签里面的值,除了
xmlDom.getElementByTagName('user')[0].firstChild.nodeValue;
还有
xmlDom.getElementByTagName('user')[0].textContent;//w3c标准的
同步异步加载
xmlDom.async = false; xmlDom.load('demo.xml'); //只支持firfox opera
模拟loadXML()方法,可以简易创建xml字符串
var xmlParser = new DOMParser(); //创建对象
var xmlStr = '
var xmlDom = xmlParser.parserFromString(xmlStr,'text/xml');
模拟.xml属性序列化字符串
var serializer = new XMLSerializer();
var xml = serializer.serializeToString(xmlDom);