我从webservice获得了以下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
标记已删除。
答案 0 :(得分: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>
标记。
答案 1 :(得分:1)
使用html()
代替text().
您的代码如下所示:
//webservice callback
onSuccess : function(xml){
var gridXML = $(xml).find("data").html();
},
答案 2 :(得分:-1)
这是一个很好的教程,如何做到XML Parsing with jQuery
onSuccess : parseXml
function parseXml(xml)
{
//find every record
$(xml).find("data").each(function()
{
//build your desired output
});
}