簡體   English   中英

將XML解析為Javascript對象

[英]Parse XML into Javascript Object

我正在使用PHP中的cURL通過Google API從Google電子表格中獲取數據。 使用AJAX HTTP請求(通過jQuery),我可以拉入所有數據並將其放入數組,但是由於<content>標簽看起來像臟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=
<entry>
<content type='text'>relativeid: 4, name: test2, type:  teset3, multiples: yes, cat: yes</content>
</entry>
<entry>many more entries...</entry>
</feed>

謝謝你的盡心幫助。

對於它的價值,我在Google api調用中使用以下URL格式:

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
  • 如何將XML中幾乎是JSON的文本轉換為JSON

要將XML轉換為JSON,您可以使用http://www.thomasfrank.se/xml_to_json.html之類的庫

事實證明

<animals>
     <dog>
          <name>Rufus</name>
          <breed>labrador</breed>
     </dog>
     <dog>
          <name>Marty</name>
          <breed>whippet</breed>
     </dog>
     <cat name="Matilda"/>
</animals>

{"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對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM