经常遇到在js里面需要解析xml的问题,然而有时候,后台返回的不是dom 而是string 字符串,需要将字符串转换成dom对象,然后才可以进行节点值解析和读取
var bankXml = '<root><bank>工行</bank><bankId>101011110</bankId></root>'
var bankDom = createXml(bankXml);
//将字符串转化成dom对象 add by lc 20101203
function createXml(str){
if(document.all){
var xmlDom = new ActiveXObject("Microsoft.XMLDOM");
xmlDom.loadXML(str);
return xmlDom;
}else
return new DOMParser().parseFromString(str,"text/xml");
}
1.string转换为xml
- function stringToXml(xmlString)
- {
- var xmlDoc;
- if(typeof xmlString == "string")
- {
- //FF
- if (document.implementation.createDocument) {
- var parser = new DOMParser()
- xmlDoc = parser.parseFromString(xmlString, "application/xml")
- //IE
- } else if (window.ActiveXObject) {
- xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
- xmlDoc.async="false"
- xmlDoc.loadXML(xmlString)
- }
- }
- else
- {
- xmlDoc = xmlString;
- }
- return xmlDoc;
- }
function stringToXml(xmlString)
{
var xmlDoc;
if(typeof xmlString == "string")
{
//FF
if (document.implementation.createDocument) {
var parser = new DOMParser()
xmlDoc = parser.parseFromString(xmlString, "application/xml")
//IE
} else if (window.ActiveXObject) {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(xmlString)
}
}
else
{
xmlDoc = xmlString;
}
return xmlDoc;
}
2.xml转换为string
- function xmlToString()
- {
- if (window.ActiveXObject) {
- return this.xmlDoc.xml; //IE
- } else {
- return (new XMLSerializer()).serializeToString(this.xmlDoc); //FF
- }
- }