最近作了一个项目用到了AJAX技术,总算是赶了一回时髦不至于让自己太落伍。项目虽然已经完成,不过过程确并不十分顺利。遇到最大的问题就是如何兼容Firefox浏览器使Javascript能正确操作XMLDOM,经过若干次失败,总算把遇到的问题一一解决。这里总结了几个常用的Javascript方法:
1. 创建XMLDOM对象
vardomDoc=false;
domDoc=document.implementation.createDocument("text/xml","",null);
2. 加载XML DOCUMENT
XMLDocument.prototype.LoadXML=function(xmlString)
{
varchildNodes=this.childNodes;
for(vari=childNodes.length-1;i>=0;i--)
this.removeChild(childNodes[i]);
vardp=newDOMParser();
varnewDOM=dp.parseFromString(xmlString,"text/xml");
varnewElt=this.importNode(newDOM.documentElement,true);
this.appendChild(newElt);
}
3. 选择匹配XPath表达式的节点集合
Element.prototype.selectNodes=function(cXPathString)
{
if(this.ownerDocument.selectNodes)
{
returnthis.ownerDocument.selectNodes(cXPathString,this);
}
else
{
throw"ForXMLElementsOnly";
}
}
XMLDocument.prototype.SelectNodes=function(cXPathString,xNode)
{
if(!xNode)
{xNode=this;}
varoNSResolver=this.createNSResolver(this.documentElement)
varaItems=this.evaluate(cXPathString,xNode,oNSResolver,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null)
varaResult=[];
for(vari=0;i<aItems.snapshotLength;i++)
{
aResult[i]=aItems.snapshotItem(i);
}
returnaResult;
}
4. 获得节点的值
functionGetNodeValue(objXmlElement)
{
varstr="";
if(window.XMLHttpRequest)//Mozilla
{
try
{
str=obj.firstChild.nodeValue;
}
catch(ex)
{
str="";
}
}
elseif(window.ActiveXObject)//IE
{
str=obj.text;
}
returnstr;
}
由于水平有限,这里仅列举了几个常用的函数,争取以后能不断完善。如果您有不同意见,请指正!在下不胜感激~~~