将XML解析为Javascript对象 [英] Parse XML into Javascript Object
问题描述
我使用PHP中的cURL通过Google API从Google电子表格中获取数据。使用AJAX HTTP请求(通过jQuery)我可以提取所有数据并将其放入数组中,但由于< content>
标记看起来像脏JSON我'有点卡住。
I am grabbing data from a Google spreadsheet through the Google API using cURL in PHP. Using a AJAX HTTP request (via jQuery) I can pull all the data in and get it into an array, but since the <content>
tag looks like dirty JSON I'm a little stuck.
我希望能够将数据作为JS对象引用,如下所示:
I would like to be able to reference the data as a JS object, like so:
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=
<entry>
<content type='text'>relativeid: 4, name: test2, type: teset3, multiples: yes, cat: yes</content>
</entry>
<entry>many more entries...</entry>
</feed>
感谢您提供任何帮助。
对于它的价值,我使用这种URL格式进行Google API呼叫:
For what it's worth, I am using this URL format for the Google api call:
https://spreadsheets.google.com/feeds/list/KEY-ID-HERE/1/public/basic
我知道我可以进行单元格调用而不是列表调用,但这更符合我的目的。
I know that I can do a "cell" call instead of a "list" call, but this suits my purposes better.
推荐答案
你可以做这样的事情: http://jsfiddle.net/GVUnF/ http://jsfiddle.net/rMMkD/1/ 。
You could do something like this: http://jsfiddle.net/GVUnF/ http://jsfiddle.net/rMMkD/1/ in your loop.
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中并不完全惯用。
您应该使用
is not exactly idiomatic in javascript. You should use
var foo = [];
而不是。
另外,附加到数组你应该使用
Also, for appending to an array you should use
foo.push('something');
而不是拥有变量i并在每个循环中递增它。
instead of having a variable i and incrementing it every loop.
这篇关于将XML解析为Javascript对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!