javascript与xml

XML是保存数据的一种格式,方便javascript的解析和应用.例如ajax中,x就是XML的代表.在ajax中,还有json,csv等保存格式.


xml文档的创建
可以使用DOM级别2的document.implementation.createDocument()方法在FireFox等相关的浏览器上创建一个空的xml文档.可以使用名为MSXML2.DOMDocument的ActiveX对象在IE中完成文档的创建.
xml创建的示例代码:
XML.newDocument=function(rootTagName,namespaceURL){
  if(!rootTagName)rootTagName="";
  if(!namespaceURL)namespaceURL="";
  
  if(document.implementation&&document.implementation.createDocument){
   return document.implementation.createDocument(namespaceURL,rootTagName,null);
  }else{
var doc=new ActiveXObject("MSXML2.DOMDocument");  
if(rootTagName){
 var prefix="";
 var tagname=rootTagName;
 var p=rootTagName.indexof(":");
 if(p!=-1){
   prefix=rootTagName..substring(0,p);
   tagname=rootTagName.substring(p+1);
 }
  if(namespaceURL){
    if(!prefix)prefix="a0";
  }else prefix="" ;
  var text="<"+(prefix?(prefix+":"):"")+tagname+(namespaceURL?(" xmlns:"+ predix+ '="'+namespaceURL+'"'):"")+">"; 
  doc.loadXML(text);
 return doc;
 }
};

也可以从网络上加载一个文档
同步载入示例:
XML.load=function(url){
  var xmldoc=XML.newDocument();
  xmldoc.async=false;
  xmldoc.load(url);
  return xmldoc;
}
异步载入示例:
XML.loadAsync=function(url){
   var xmldoc=XML.newDocument();
   if(document.implementation&&document.implementation.createDocument){
     xmldoc.onload=function(){ callback(xmldoc);};
   }else{
 xmldoc.onreadystatechange=function(){ if(xmldoc.readyState==4)callback(xmldoc);}; 
       }
   
xmldoc.load(url);   
}

XML文档的解析
XML.parse=function(text){
  if(typeof DOMParser !="undefined"){
    return (new DOMParser()).parseFromString(text,"application/xml");
  }else if(typeof ActiveXObject!="undefined"){
var doc=XML.newDocument();
doc.loadXML(text);
return doc;  
  }else{
 var url="data:text/xml;charset=utf-8,"+encodeURIComponent(text);
 var request=createRequest();
 request.open("GET",url,false);
 request.send(null);
 return request.responseXML;  
  }
}
在浏览器中使用XML文档,需要使用javascript来解析,来规避掉HTML的兼容性问题,而不要直接使用.

用DOM API来操作XML
HTML是XML的一种,HTML可以使用DOM的方式操作,XML的结构域HTML是一样的,也可以用DOM的API操作.HTML DOM和XML的DOM最主要的区别可能就是getElementById()方法对XML无效.属性类型在一个文档的DTD中声明,而一个文档的DTD在DOCTYPE声明中指定.web应用程序中使用的XML文档通常没有DOCTYPE声明来指定一个DTD,所以在这个文档上使用getElementById总返回null.但是getElementsByTagName却能够工作的很好.总之,还是要注意HTML与XML的区别.



你可能感兴趣的:(javascript与xml)