xml

当创建的Dom文档放进了XML内容,那么就可以像对Dom进行交互一样使用所有的方法和属性
 
如果直接访问一个对象会调用它的valueof方法,如xmldom.parseError
 
对onreadystatechange事件的函数赋值一定要在调用load()之前,确保函数能够及时被触发调用,同时需要注意的是,在事件处理函数里面,不能使用this指向本身(而是使用该XML 文档变量),ActiveX 对象不允许使用this出于安全考虑。
 
 
 跨浏览器解析XML为Dom object函数:
function parseXml(xml){                                                                       
var xmldom = null;
if (typeof DOMParser != “undefined”){
xmldom = (new DOMParser()).parseFromString(xml, “text/xml”);
var errors = xmldom.getElementsByTagName(“parsererror”);           
 
if (errors.length){
     throw new Error(”XML parsing error:” + errors[0].textContent);
} else if (typeof ActiveXObject != ”undefined”){
xmldom = createDocument();
xmldom.loadXML(xml);
if (xmldom.parseError != 0){
     throw new Error(”XML parsing error: ” + xmldom.parseError.reason);
}
} else {
     throw new Error(”No XML parser available.”);
}
return xmldom;
}
 
function createDocument(){                                                                       //针对ie
if (typeof arguments.callee.activeXString != “string”){                                //把信息存储到该函数对象里arguments.callee
var versions = [“MSXML2.DOMDocument.6.0”, “MSXML2.DOMDocument.3.0”,“MSXML2.DOMDocument”],
i, len;
for (i=0,len=versions.length; i < len; i++){
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex){
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
 
使用方法:
var xmldom = null;
try {
     xmldom = parseXml(“<root><child/></root>”);
} catch (ex){
     alert(ex.message);
}
//further processing
 
 
把Dom对象转化为XML:
function serializeXml(xmldom){
if (typeof XMLSerializer != “undefined”){
     return (new XMLSerializer()).serializeToString(xmldom);
} else if (typeof xmldom.xml != “undefined”){
     return xmldom.xml;
} else {
     throw new Error(“Could not serialize XML DOM.”);
}
}

posted on 2016-01-28 15:05  迷茫小飞侠  阅读(133)  评论(0编辑  收藏  举报

导航