将XML解析为Javascript对象
我正在使用PHP中的cURL通过Google API从Google电子表格中获取数据。 使用AJAX HTTP请求(通过jQuery)我可以将所有数据拉入并将其放入数组中,但由于标签看起来像脏JSON,我有点卡住了。
我希望能够将数据作为JS对象引用,如下所示:
alert(xml.feed.content.name);
示例代码:
$.ajax({ type: "GET", url: GtargetURL, dataType: "xml", success: function parseMyXML(xml){ var Entries = new Array; var i = 0; $(xml).find("entry").each(function(){ var content = $(this).find("content").text(); Entries[i]=content; i++; }); var myArray= new Array(); myArray= Entries[1].split(","); alert (myArray[1]); // Result: "test2" } });
示例XML:
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gsx= relativeid: 4, name: test2, type: teset3, multiples: yes, cat: yes many more entries...
谢谢你尽你所能的帮助。
对于它的价值,我使用这种URL格式进行Google api调用:
https://spreadsheets.google.com/feeds/list/KEY-ID-HERE/1/public/basic
我知道我可以进行“小区”呼叫而不是“列表”呼叫,但这更适合我的目的。
你可以这样做: http : //jsfiddle.net/GVUnF/ http://jsfiddle.net/rMMkD/1/在你的循环中。
var jsonLikeString = "name:red, type:blue, multiples:green, cat:brown"; var jsObject = {}; var stringWithoutSpaces = jsonLikeString.split(' ').join(''); var splitStrings = stringWithoutSpaces.split(","); var kvPairArray = []; for(var i in splitStrings){ if(splitStrings.hasOwnProperty(i)){ var kvPair = splitStrings[i]; kvPairArray = kvPair.split(":"); jsObject[kvPairArray[0]] = kvPairArray[1]; } } alert(jsObject.cat);
请注意
var foo = new Array;
在javascript中并不完全是惯用语。 你应该用
var foo = [];
代替。
另外,要附加到数组,您应该使用
foo.push('something');
而不是有一个变量i,并在每个循环中递增它。
您的问题分为两部分:
- 如何将XML转换为JSON
- 如何将几乎是JSON的XML中的一些文本转换为JSON
要将XML转换为JSON,您可以使用像http://www.thomasfrank.se/xml_to_json.html这样的库
事实certificate
Rufus labrador Marty whippet
成
{"animals": {"dog":[ {"name":"Rufus", "breed":"labrador"}, {"name":"Marty", "breed":"whippet"}], "cat": {"name":"Matilda"}}}
然后你可以按照TheShellfishMeme的建议来转
relativeid: 4, name: test2, type: teset3, multiples: yes, cat: yes
进入JSON对象