将XML解析为Javascript对象 [英] Parse XML into Javascript Object

查看:63
本文介绍了将XML解析为Javascript对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆