2014-08-27 33 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(); 
},