Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / xml / parser.js @ 11

History | View | Annotate | Download (2.81 KB)

1
/*
2
        Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3
        Available via Academic Free License >= 2.1 OR the modified BSD license.
4
        see: http://dojotoolkit.org/license for details
5
*/
6

    
7

    
8
if(!dojo._hasResource["dojox.xml.parser"]){
9
dojo._hasResource["dojox.xml.parser"]=true;
10
dojo.provide("dojox.xml.parser");
11
dojox.xml.parser.parse=function(_1,_2){
12
var _3=dojo.doc;
13
var _4;
14
_2=_2||"text/xml";
15
if(_1&&dojo.trim(_1)&&"DOMParser" in dojo.global){
16
var _5=new DOMParser();
17
_4=_5.parseFromString(_1,_2);
18
var de=_4.documentElement;
19
var _6="http://www.mozilla.org/newlayout/xml/parsererror.xml";
20
if(de.nodeName=="parsererror"&&de.namespaceURI==_6){
21
var _7=de.getElementsByTagNameNS(_6,"sourcetext")[0];
22
if(_7){
23
_7=_7.firstChild.data;
24
}
25
throw new Error("Error parsing text "+de.firstChild.data+" \n"+_7);
26
}
27
return _4;
28
}else{
29
if("ActiveXObject" in dojo.global){
30
var ms=function(n){
31
return "MSXML"+n+".DOMDocument";
32
};
33
var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];
34
dojo.some(dp,function(p){
35
try{
36
_4=new ActiveXObject(p);
37
}
38
catch(e){
39
return false;
40
}
41
return true;
42
});
43
if(_1&&_4){
44
_4.async=false;
45
_4.loadXML(_1);
46
var pe=_4.parseError;
47
if(pe.errorCode!==0){
48
throw new Error("Line: "+pe.line+"\n"+"Col: "+pe.linepos+"\n"+"Reason: "+pe.reason+"\n"+"Error Code: "+pe.errorCode+"\n"+"Source: "+pe.srcText);
49
}
50
}
51
if(_4){
52
return _4;
53
}
54
}else{
55
if(_3.implementation&&_3.implementation.createDocument){
56
if(_1&&dojo.trim(_1)&&_3.createElement){
57
var _8=_3.createElement("xml");
58
_8.innerHTML=_1;
59
var _9=_3.implementation.createDocument("foo","",null);
60
dojo.forEach(_8.childNodes,function(_a){
61
_9.importNode(_a,true);
62
});
63
return _9;
64
}else{
65
return _3.implementation.createDocument("","",null);
66
}
67
}
68
}
69
}
70
return null;
71
};
72
dojox.xml.parser.textContent=function(_b,_c){
73
if(arguments.length>1){
74
var _d=_b.ownerDocument||dojo.doc;
75
dojox.xml.parser.replaceChildren(_b,_d.createTextNode(_c));
76
return _c;
77
}else{
78
if(_b.textContent!==undefined){
79
return _b.textContent;
80
}
81
var _e="";
82
if(_b){
83
dojo.forEach(_b.childNodes,function(_f){
84
switch(_f.nodeType){
85
case 1:
86
case 5:
87
_e+=dojox.xml.parser.textContent(_f);
88
break;
89
case 3:
90
case 2:
91
case 4:
92
_e+=_f.nodeValue;
93
}
94
});
95
}
96
return _e;
97
}
98
};
99
dojox.xml.parser.replaceChildren=function(_10,_11){
100
var _12=[];
101
if(dojo.isIE){
102
dojo.forEach(_10.childNodes,function(_13){
103
_12.push(_13);
104
});
105
}
106
dojox.xml.parser.removeChildren(_10);
107
dojo.forEach(_12,dojo.destroy);
108
if(!dojo.isArray(_11)){
109
_10.appendChild(_11);
110
}else{
111
dojo.forEach(_11,function(_14){
112
_10.appendChild(_14);
113
});
114
}
115
};
116
dojox.xml.parser.removeChildren=function(_15){
117
var _16=_15.childNodes.length;
118
while(_15.hasChildNodes()){
119
_15.removeChild(_15.firstChild);
120
}
121
return _16;
122
};
123
dojox.xml.parser.innerXML=function(_17){
124
if(_17.innerXML){
125
return _17.innerXML;
126
}else{
127
if(_17.xml){
128
return _17.xml;
129
}else{
130
if(typeof XMLSerializer!="undefined"){
131
return (new XMLSerializer()).serializeToString(_17);
132
}
133
}
134
}
135
return null;
136
};
137
}