100分求助如何用javascript语言把XML转换成JSON 本帖最后由 jiangpinhe 于 2010-04-09 15:00:11 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个例子,很详细<html><body><script type="text/javascript">var xml = '<admin>\n' +' <Attribute id = "Sort">0</Attribute>\n' +' <Attribute id = "SortView">0</Attribute>\n' +' <Attribute id = "TCView">0</Attribute>\n' +' <Attribute id = "Deep">4</Attribute>\n' +' <Attribute id = "TCode"></Attribute>\n' +' <Nodes>\n' +' <_1>\n' +' <_1 id="Text">1111</_1>\n' +' <_1 id="ID">A-2018</_1>\n' +' <_1 id="Deep">0</_1>\n' +' <_1 id="Sort">0</_1>\n' +' <_1 id="ParentID">null</_1>\n' +' <_1 id="Taxis">0</_1>\n' +' <_1 id="Display"></_1>\n' +' <_1 id="Class"></_1>\n' +' <_1 id="Type">0</_1>\n' +' <_1 id="TCode"></_1>\n' +' </_1>\n' +' <_2>\n' +' <_2 id="Text">2222</_2>\n' +' <_2 id="ID">A-2018</_2>\n' +' <_2 id="Deep">0</_2>\n' +' <_2 id="Sort">0</_2>\n' +' <_2 id="ParentID">null</_2>\n' +' <_2 id="Taxis">0</_2>\n' +' <_2 id="Display"></_2>\n' +' <_2 id="Class"></_2>\n' +' <_2 id="Type">0</_2>\n' +' <_2 id="TCode"></_2>\n' +' </_2>\n' +' </Nodes>\n' +'</admin>\n';if (typeof ActiveXObject == 'function'){ xmldoc = new ActiveXObject('Microsoft.XMLDOM'); xmldoc.loadXML(xml);} else { // firefox xmldoc = (new DOMParser()).parseFromString(xml, 'text/xml'); XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath) { var xpe = new XPathEvaluator(); var nsResolver = xpe.createNSResolver( this .ownerDocument == null ? this .documentElement : this .ownerDocument.documentElement); var result = xpe.evaluate(xpath, this , nsResolver, 0 , null ); var found = []; var res; while (res = result.iterateNext()) found.push(res); return found; } }var result = 'var Cont = {\n' +'\t"Nodes": [\n';var nodes = xmldoc.selectNodes('admin/Nodes');if (nodes.length > 0) { nodes = nodes[0]; var nodeFirst = true; for (var i = 0; i < nodes.childNodes.length; i++) { var node = nodes.childNodes[i]; if (node.nodeType == 1) { result += '\t\t' + (!nodeFirst ? ',' : '') + '{\n'; nodeFirst = false; var childFirst = true; for (var j = 0; j < node.childNodes.length; j++) { var child = node.childNodes[j]; if (child.nodeType == 1) { result += '\t\t\t' + (!childFirst ? ',' : '') + '"' + child.getAttribute('id') + '": ' + '"' + (child.childNodes.length > 0 && child.childNodes[0].nodeType == 3 ? child.childNodes[0].nodeValue : '').replace(/"/, '\\"') + '"\n'; childFirst = false; } } result += '\t\t}\n'; } }}result += '\t]\n';var nodes = xmldoc.selectNodes('admin/Attribute');result += '\t,"Attribute":{\n';var nodeFirst = true;for (var i = 0; i < nodes.length; i++) { var node = nodes[i]; if (node.nodeType == 1) { result += '\t\t' + (!nodeFirst ? ',' : '') + '"' + node.getAttribute('id') + '": ' + '"' + (node.childNodes.length > 0 && node.childNodes[0].nodeType == 3 ? node.childNodes[0].nodeValue : '').replace(/"/, '\\"') + '"\n'; nodeFirst = false; }}result += '\t}\n};';alert(result);</script></body></html>你在此基础上改改就行!! 输出的结果是:var Cont = { "Nodes": [ { "Text": "1111" ,"ID": "A-2018" ,"Deep": "0" ,"Sort": "0" ,"ParentID": "null" ,"Taxis": "0" ,"Display": "" ,"Class": "" ,"Type": "0" ,"TCode": "" } ,{ "Text": "2222" ,"ID": "A-2018" ,"Deep": "0" ,"Sort": "0" ,"ParentID": "null" ,"Taxis": "0" ,"Display": "" ,"Class": "" ,"Type": "0" ,"TCode": "" } ] ,"Attribute":{ "Sort": "0" ,"SortView": "0" ,"TCView": "0" ,"Deep": "4" ,"TCode": "" }}; http://www.xue5.com/itedu/200802/102869.html又找了找,这个感觉更好也可以,还是LZ自己多看看吧!! test.xml<?xml version="1.0"?><channel><title>Key Events from Joe Santoro</title><item> <title>IMPACT 2010</title> <eventsstart>May 02, 2010 12:00 AM</eventsstart> <eventsend>May 07, 2010 12:00 AM</eventsend></item><item> <title>IMPACT 2010</title> <eventsstart>May 02, 2010 12:00 AM</eventsstart> <eventsend>May 07, 2010 12:00 AM</eventsend></item></channel>js:<SCRIPT LANGUAGE="JavaScript"> var json=new Array(); var doc = new ActiveXObject('Microsoft.XMLDOM'); doc.load(xmlpath);//path var items = doc.getElementsByTagName("item"); for(var i=0;i<items.length;i++){ var item = items[i]; var obj=new Array(); obj["title"] = item.getElementsByTagName("title")[0].text ; obj["eventsstart"] = item.getElementsByTagName("eventsstart")[0].text ; obj["eventsend"] = item.getElementsByTagName("eventsend")[0].text ; json.push(obj); }</script> http://www.thomasfrank.se/xml_to_json.html http://www.diysys.com有很多关于php,mysql,js,css,json的信息,适合新手和进阶者 xml to json 這個有jquery plug啊 js 怎么能点击按钮让用户ie6升级为ie8? js求助 json格式的字符串拼接成为URL的问题 jquery 如何获取字体颜色为红色的元素 请问如何用JS实现图片点击后位置转换? js怎么获取com组件中的输出参数? js隐藏IE地址栏的问题 用asp 或 javascrpt 怎麼打開 autocad 的圖??? 急:看一下这个bbs的代码段,俺实在搞不懂阿。 我不想让用户再回上一页,怎样实现使网页打开一个新页面后,浏览器后退扭就自动失效,限制用户不让其点击后退回上页? 请教一个jquery选择器的问题 如何动态的往head标签中加入代码?
<body>
<script type="text/javascript">
var xml =
'<admin>\n' +
' <Attribute id = "Sort">0</Attribute>\n' +
' <Attribute id = "SortView">0</Attribute>\n' +
' <Attribute id = "TCView">0</Attribute>\n' +
' <Attribute id = "Deep">4</Attribute>\n' +
' <Attribute id = "TCode"></Attribute>\n' +
' <Nodes>\n' +
' <_1>\n' +
' <_1 id="Text">1111</_1>\n' +
' <_1 id="ID">A-2018</_1>\n' +
' <_1 id="Deep">0</_1>\n' +
' <_1 id="Sort">0</_1>\n' +
' <_1 id="ParentID">null</_1>\n' +
' <_1 id="Taxis">0</_1>\n' +
' <_1 id="Display"></_1>\n' +
' <_1 id="Class"></_1>\n' +
' <_1 id="Type">0</_1>\n' +
' <_1 id="TCode"></_1>\n' +
' </_1>\n' +
' <_2>\n' +
' <_2 id="Text">2222</_2>\n' +
' <_2 id="ID">A-2018</_2>\n' +
' <_2 id="Deep">0</_2>\n' +
' <_2 id="Sort">0</_2>\n' +
' <_2 id="ParentID">null</_2>\n' +
' <_2 id="Taxis">0</_2>\n' +
' <_2 id="Display"></_2>\n' +
' <_2 id="Class"></_2>\n' +
' <_2 id="Type">0</_2>\n' +
' <_2 id="TCode"></_2>\n' +
' </_2>\n' +
' </Nodes>\n' +
'</admin>\n';
if (typeof ActiveXObject == 'function')
{
xmldoc = new ActiveXObject('Microsoft.XMLDOM');
xmldoc.loadXML(xml);
} else { // firefox
xmldoc = (new DOMParser()).parseFromString(xml, 'text/xml');
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath) {
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver( this .ownerDocument == null ?
this .documentElement : this .ownerDocument.documentElement);
var result = xpe.evaluate(xpath, this , nsResolver, 0 , null );
var found = [];
var res;
while (res = result.iterateNext())
found.push(res);
return found;
}
}var result =
'var Cont = {\n' +
'\t"Nodes": [\n';
var nodes = xmldoc.selectNodes('admin/Nodes');
if (nodes.length > 0) {
nodes = nodes[0];
var nodeFirst = true;
for (var i = 0; i < nodes.childNodes.length; i++) {
var node = nodes.childNodes[i];
if (node.nodeType == 1) {
result += '\t\t' + (!nodeFirst ? ',' : '') + '{\n';
nodeFirst = false;
var childFirst = true;
for (var j = 0; j < node.childNodes.length; j++) {
var child = node.childNodes[j];
if (child.nodeType == 1) {
result += '\t\t\t' + (!childFirst ? ',' : '') + '"' + child.getAttribute('id') + '": ' + '"' +
(child.childNodes.length > 0 && child.childNodes[0].nodeType == 3 ?
child.childNodes[0].nodeValue : '').replace(/"/, '\\"') + '"\n';
childFirst = false;
}
}
result += '\t\t}\n';
}
}
}
result += '\t]\n';
var nodes = xmldoc.selectNodes('admin/Attribute');
result += '\t,"Attribute":{\n';
var nodeFirst = true;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (node.nodeType == 1) {
result += '\t\t' + (!nodeFirst ? ',' : '') + '"' + node.getAttribute('id') + '": ' + '"' +
(node.childNodes.length > 0 && node.childNodes[0].nodeType == 3 ?
node.childNodes[0].nodeValue : '').replace(/"/, '\\"') + '"\n';
nodeFirst = false;
}
}
result += '\t}\n};';
alert(result);
</script>
</body>
</html>你在此基础上改改就行!!
"Nodes": [
{
"Text": "1111"
,"ID": "A-2018"
,"Deep": "0"
,"Sort": "0"
,"ParentID": "null"
,"Taxis": "0"
,"Display": ""
,"Class": ""
,"Type": "0"
,"TCode": ""
}
,{
"Text": "2222"
,"ID": "A-2018"
,"Deep": "0"
,"Sort": "0"
,"ParentID": "null"
,"Taxis": "0"
,"Display": ""
,"Class": ""
,"Type": "0"
,"TCode": ""
}
]
,"Attribute":{
"Sort": "0"
,"SortView": "0"
,"TCView": "0"
,"Deep": "4"
,"TCode": ""
}
};
<channel>
<title>Key Events from Joe Santoro</title>
<item>
<title>IMPACT 2010</title>
<eventsstart>May 02, 2010 12:00 AM</eventsstart>
<eventsend>May 07, 2010 12:00 AM</eventsend>
</item>
<item>
<title>IMPACT 2010</title>
<eventsstart>May 02, 2010 12:00 AM</eventsstart>
<eventsend>May 07, 2010 12:00 AM</eventsend>
</item>
</channel>js:
<SCRIPT LANGUAGE="JavaScript">
var json=new Array();
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.load(xmlpath);//path
var items = doc.getElementsByTagName("item");
for(var i=0;i<items.length;i++){
var item = items[i];
var obj=new Array();
obj["title"] = item.getElementsByTagName("title")[0].text ;
obj["eventsstart"] = item.getElementsByTagName("eventsstart")[0].text ;
obj["eventsend"] = item.getElementsByTagName("eventsend")[0].text ;
json.push(obj);
}
</script>