JQuery获得了XML的一部分

时间:2014-08-27 14:35:26

标签: javascript jquery xml

我从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标记已删除。

3 个答案:

答案 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>标记。

Fiddle Here

答案 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
  });
}