2014-08-27 32 views
0

的一部分,我有以下XML從web服務的結果:JQuery的獲得XML

<response> 
    <type>SUCCESS</type> 
    <message/> 
    <data> 
     <rowset> 
      <head> 
       <!-- more tags here --> 
      </head> 
      <Row> 
       <cell Col="ID">102</cell> 
       <cell Col="SHIPMENT">1000036096</cell> 
       <cell Col="RFC">test</cell> 
       <cell Col="STATUS">SUCCESS</cell> 
       <cell Col="FIRST_PROCESSING">2014-08-27T15:48:08</cell> 
       <cell Col="LAST_PROCESSING">2014-08-27T15:57:59</cell> 
       <cell Col="MESSAGE"/> 
       <cell Col="RETRY_COUNT">2</cell> 
      </Row> 
      <Row> 
       <cell Col="ID">100</cell> 
       <cell Col="SHIPMENT">1000036157</cell> 
       <cell Col="RFC">test</cell> 
       <cell Col="STATUS">SUCCESS</cell> 
       <cell Col="FIRST_PROCESSING">2014-08-27T15:29:58</cell> 
       <cell Col="LAST_PROCESSING">2014-08-27T15:29:58</cell> 
       <cell Col="MESSAGE"/> 
       <cell Col="RETRY_COUNT">0</cell> 
      </Row> 
     </rowset> 
    </data> 
</response> 

我想要得到的data標籤下的XML的一部分。我需要將這部分XML傳遞給一個基於這個XML創建網格的JavaScript庫。

//webservice callback 
onSuccess : function(xml){ 
    var gridXML = $(xml).find("data").text(); 
}, 

問題是.text()只保留標記值並刪除標記。如何以字符串格式獲取data標籤下的所有內容?

編輯:我按照建議嘗試了.html(),它確實返回了data下的節點。但head標籤已刪除。

+2

您是否試過'.html()'? – Stryner 2014-08-27 14:37:49

+0

也許這會幫助你:http://stackoverflow.com/questions/1675027/how-do-i-get-the-entire-xml-string-from-a-xmldocument-returned-by-jquery-cross你可以抓住'XML'作爲'文本',並使一些正則表達式來抓取從''的所有文本,直到'' – RaphaelDDL 2014-08-27 14:40:05

+0

@最近我已經更新了我的問題。 – Hazaart 2014-08-27 15:06:21

回答

2

現在你已經指定你的問題更進一步,看來你的問題在於jQuery將刪除<head>元素當解析它像HTML一樣。

例子:

var myUnparsedDocument = "<response><test>" + 
          "<head>1</head>" + 
          "<data>2</data>" + 
         "</test></response>" 

//this statement will yield: "1<data>2</data>" 
$(myUnparsedDocument).find("test").html(); 

一個辦法讓過去這將是告訴jQuery來分析它爲XML文檔:

var myXMLDocument = $.parseXML(myUnparsedDocument); 
$(myXMLDocument).find("test").html(); 

這將保持<head>標籤,符合市場預期。

Fiddle Here

+0

這個伎倆。感謝您的時間,非常感謝! – Hazaart 2014-08-27 17:57:44

-1

這裏是一個很好的教程就如何做到的text().

你的代碼,它XML Parsing with jQuery

onSuccess : parseXml 

function parseXml(xml) 
{ 
    //find every record 
    $(xml).find("data").each(function() 
    { 
    //build your desired output 
    }); 
} 
+0

請將相關部分發布在答案本身上,鏈接可能會在以後失效,答案將會丟失 – RaphaelDDL 2014-08-27 14:40:51

+0

@RaphaelDDL我正在編輯答案 – HaBo 2014-08-27 14:42:11

+0

這並不回答問題。 – JDB 2014-08-27 17:07:32

1

使用html(),而不是應該是這樣的:

//webservice callback 
onSuccess : function(xml){ 
    var gridXML = $(xml).find("data").html(); 
},