客户端的xml操作
从代理类中获得整个xml一般都转成了string类型了。。这里 我就将今天看到的一个纯JS端的操作XML脚本写下来
代码
parseSpatialSearchDoc = function(doc){
var xmlObj = doc;
var exception=null;
if(typeof xmlObj == "string"){
//将字符串转换为xml dom对象
xmlObj = Utils.stringToXml(xmlObj);
}
//解析xml文档
var root = xmlObj.documentElement;
if(root==null)return null;
exception=root.getElementsByTagName("Exception")[0];
if(exception==null){
var spatialSearchObject=null;
var spatialSearchObjectArr=[];
var spatialSearchRecords=null;
var spatialSearchDetail=null;
var filed=null;
var spatialQueryAndRocerdArr=[];
var recordCount=null;
recordCount=root.getAttribute("recordCount");
spatialSearchRecords=root.getElementsByTagName("ShareServiceResult");
if(spatialSearchRecords!=null&&spatialSearchRecords.length!=0){
for(var i=spatialSearchRecords.length-1;i>=0;i--){
spatialSearchObject=new SpatialSearchObject();
spatialSearchDetail=spatialSearchRecords[i].childNodes;
for(var k=spatialSearchDetail.length-1;k>=0;k--){
filed=spatialSearchDetail[k].tagName;
spatialSearchObject[filed]=spatialSearchDetail[k].text?spatialSearchDetail[k].text:spatialSearchDetail[k].textContent;
}
spatialSearchObjectArr.push(spatialSearchObject);
}
}
spatialQueryAndRocerdArr.push(recordCount);
spatialQueryAndRocerdArr.push(spatialSearchObjectArr);
return spatialQueryAndRocerdArr;
}else return null;
}
var xmlObj = doc;
var exception=null;
if(typeof xmlObj == "string"){
//将字符串转换为xml dom对象
xmlObj = Utils.stringToXml(xmlObj);
}
//解析xml文档
var root = xmlObj.documentElement;
if(root==null)return null;
exception=root.getElementsByTagName("Exception")[0];
if(exception==null){
var spatialSearchObject=null;
var spatialSearchObjectArr=[];
var spatialSearchRecords=null;
var spatialSearchDetail=null;
var filed=null;
var spatialQueryAndRocerdArr=[];
var recordCount=null;
recordCount=root.getAttribute("recordCount");
spatialSearchRecords=root.getElementsByTagName("ShareServiceResult");
if(spatialSearchRecords!=null&&spatialSearchRecords.length!=0){
for(var i=spatialSearchRecords.length-1;i>=0;i--){
spatialSearchObject=new SpatialSearchObject();
spatialSearchDetail=spatialSearchRecords[i].childNodes;
for(var k=spatialSearchDetail.length-1;k>=0;k--){
filed=spatialSearchDetail[k].tagName;
spatialSearchObject[filed]=spatialSearchDetail[k].text?spatialSearchDetail[k].text:spatialSearchDetail[k].textContent;
}
spatialSearchObjectArr.push(spatialSearchObject);
}
}
spatialQueryAndRocerdArr.push(recordCount);
spatialQueryAndRocerdArr.push(spatialSearchObjectArr);
return spatialQueryAndRocerdArr;
}else return null;
}
其中有个将string装成xml的方法也贴下来:
代码
Utils.stringToXml = function(str){
var xmlDoc;
if (window.ActiveXObject) { // IE
try {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
//xmldoc = new ActiveXObject("Msxml2.DOMDocument");
if(!xmlDoc){
xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
}
xmlDoc.loadXML(str);
} catch(e){
//错误处理
}
}else
if(window.XMLHttpRequest) { //firefox
var oParser = new DOMParser();
xmlDoc = oParser.parseFromString(str,"text/xml");
if (xmlDoc.documentElement.tagName == "parsererror") {
var oSerializer = new XMLSerializer();
//alert("An error occurred:\n错误代码: " + oSerializer.serializeToString(oXmlDom.documentElement));
}
}
return xmlDoc;
}
var xmlDoc;
if (window.ActiveXObject) { // IE
try {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
//xmldoc = new ActiveXObject("Msxml2.DOMDocument");
if(!xmlDoc){
xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
}
xmlDoc.loadXML(str);
} catch(e){
//错误处理
}
}else
if(window.XMLHttpRequest) { //firefox
var oParser = new DOMParser();
xmlDoc = oParser.parseFromString(str,"text/xml");
if (xmlDoc.documentElement.tagName == "parsererror") {
var oSerializer = new XMLSerializer();
//alert("An error occurred:\n错误代码: " + oSerializer.serializeToString(oXmlDom.documentElement));
}
}
return xmlDoc;
}
因为在急着赶项目所以没有修饰。。。下面在贴下XML格式。供大家参考:
代码
<?xml version="1.0" encoding="UTF-8"?><NewDataSet recordCount="5" pageIndex="1" pageSize="200"><ShareServiceResult><NAME xml:space="preserve"></NAME><GEOMETRY></GEOMETRY><ROW_NUM></ROW_NUM></ShareServiceResult></NewDataSet>