blob: f2a9439d8fa5a3d1ef53d290ec1641534f9f0e58 [file] [log] [blame]
dojo.provide("dojo.xml.Parse");
dojo.require("dojo.dom");
dojo.xml.Parse=function(){
var _1=((dojo.render.html.capable)&&(dojo.render.html.ie));
function getTagName(_2){
try{
return _2.tagName.toLowerCase();
}
catch(e){
return "";
}
}
function getDojoTagName(_3){
var _4=getTagName(_3);
if(!_4){
return "";
}
if((dojo.widget)&&(dojo.widget.tags[_4])){
return _4;
}
var p=_4.indexOf(":");
if(p>=0){
return _4;
}
if(_4.substr(0,5)=="dojo:"){
return _4;
}
if(dojo.render.html.capable&&dojo.render.html.ie&&_3.scopeName!="HTML"){
return _3.scopeName.toLowerCase()+":"+_4;
}
if(_4.substr(0,4)=="dojo"){
return "dojo:"+_4.substring(4);
}
var _6=_3.getAttribute("dojoType")||_3.getAttribute("dojotype");
if(_6){
if(_6.indexOf(":")<0){
_6="dojo:"+_6;
}
return _6.toLowerCase();
}
_6=_3.getAttributeNS&&_3.getAttributeNS(dojo.dom.dojoml,"type");
if(_6){
return "dojo:"+_6.toLowerCase();
}
try{
_6=_3.getAttribute("dojo:type");
}
catch(e){
}
if(_6){
return "dojo:"+_6.toLowerCase();
}
if((dj_global["djConfig"])&&(!djConfig["ignoreClassNames"])){
var _7=_3.className||_3.getAttribute("class");
if((_7)&&(_7.indexOf)&&(_7.indexOf("dojo-")!=-1)){
var _8=_7.split(" ");
for(var x=0,c=_8.length;x<c;x++){
if(_8[x].slice(0,5)=="dojo-"){
return "dojo:"+_8[x].substr(5).toLowerCase();
}
}
}
}
return "";
}
this.parseElement=function(_b,_c,_d,_e){
var _f=getTagName(_b);
if(_1&&_f.indexOf("/")==0){
return null;
}
try{
var _10=_b.getAttribute("parseWidgets");
if(_10&&_10.toLowerCase()=="false"){
return {};
}
}
catch(e){
}
var _11=true;
if(_d){
var _12=getDojoTagName(_b);
_f=_12||_f;
_11=Boolean(_12);
}
var _13={};
_13[_f]=[];
var pos=_f.indexOf(":");
if(pos>0){
var ns=_f.substring(0,pos);
_13["ns"]=ns;
if((dojo.ns)&&(!dojo.ns.allow(ns))){
_11=false;
}
}
if(_11){
var _16=this.parseAttributes(_b);
for(var _10 in _16){
if((!_13[_f][_10])||(typeof _13[_f][_10]!="array")){
_13[_f][_10]=[];
}
_13[_f][_10].push(_16[_10]);
}
_13[_f].nodeRef=_b;
_13.tagName=_f;
_13.index=_e||0;
}
var _17=0;
for(var i=0;i<_b.childNodes.length;i++){
var tcn=_b.childNodes.item(i);
switch(tcn.nodeType){
case dojo.dom.ELEMENT_NODE:
var ctn=getDojoTagName(tcn)||getTagName(tcn);
if(!_13[ctn]){
_13[ctn]=[];
}
_13[ctn].push(this.parseElement(tcn,true,_d,_17));
if((tcn.childNodes.length==1)&&(tcn.childNodes.item(0).nodeType==dojo.dom.TEXT_NODE)){
_13[ctn][_13[ctn].length-1].value=tcn.childNodes.item(0).nodeValue;
}
_17++;
break;
case dojo.dom.TEXT_NODE:
if(_b.childNodes.length==1){
_13[_f].push({value:_b.childNodes.item(0).nodeValue});
}
break;
default:
break;
}
}
return _13;
};
this.parseAttributes=function(_1b){
var _1c={};
var _1d=_1b.attributes;
var _1e,i=0;
while((_1e=_1d[i++])){
if(_1){
if(!_1e){
continue;
}
if((typeof _1e=="object")&&(typeof _1e.nodeValue=="undefined")||(_1e.nodeValue==null)||(_1e.nodeValue=="")){
continue;
}
}
var nn=_1e.nodeName.split(":");
nn=(nn.length==2)?nn[1]:_1e.nodeName;
_1c[nn]={value:_1e.nodeValue};
}
return _1c;
};
};