如何使用Jquery使用<! - [CDATA [...]] - >检索XML

时间:2014-07-23 08:29:23

标签: jquery xml cdata

我在使用CDATA字符串检索XML数据时遇到了一个小问题。

这是我的XML

<identifier rownumber="1">
<A.SOLUTION_ID>1001</A.SOLUTION_ID>
<A.LIBRARY_GROUP><![CDATA[Business Managment 1]]></A.LIBRARY_GROUP>
<A.LIBRARY_NAME><![CDATA[BM 01]]></A.LIBRARY_NAME>
</identifier>

<identifier rownumber="2">
<A.SOLUTION_ID>1002</A.SOLUTION_ID>
<A.LIBRARY_GROUP><![CDATA[Engineering]]></A.LIBRARY_GROUP>
<A.LIBRARY_NAME><![CDATA[ENG 05]]></A.LIBRARY_NAME>
</identifier>

我的Jquery代码

$.ajax({
type: "GET",
url: "http://myspace.com/external.xml",
dataType: "xml",
success: function parseXml(xml){
$(xml).find('identifier').each(function() {
    var rownumber = $(this).attr('rownumber');
    var A_LIBRARY_GROUP = $(this).find('A.LIBRARY_GROUP').text();

        $("#output").append("Row Number: " + rownumber + "<br/>");
        $("#output").append("A_LIBRARY_GROUP: " + A_LIBRARY_GROUP + "<br/><br/>-------------<br/>");
    });

需要输出:

Row Number: 1
A_LIBRARY_GROUP: Business Managment 1


Row Number: 2
A_LIBRARY_GROUP: Engineering

我的问题:如何检索A.LIBRARY_GROUP和A.LIBRARY_NAME内容?它只显示一个空白数据。我只能检索ROW NUMBER

这是一个检索到的外部XML,因此“。”句点字符包含在XML名称中。 任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

示例 - jsFiddle

您的成功功能不需要名称,您不需要使用$.parseXML()。如果您的ajax返回类型已经是XML并且使用XML MIME类型传输内容,则AJAX调用应该已经将其转换为XMLDoc。

不幸的是,看起来jQuery并不真正 XML,只是HTML。您可以使用jQuery和本机节点遍历的混合来获取值,或者获取XML插件。

对于混合动力车,这应该有用......

$.ajax({
    type: "GET",
    url: "http://myspace.com/external.xml",
    dataType: "xml",
    success: function (xml) {
        $(xml).find('identifier').each(function(i, o) {
            var rownumber = $(o).attr('rownumber');
            var A_LIBRARY_GROUP = o.getElementsByTagName('A.LIBRARY_GROUP')[0].textContent;

            $("#output").append("Row Number: " + rownumber + "<br/>");
            $("#output").append("A_LIBRARY_GROUP: " + A_LIBRARY_GROUP + "<br/><br/>-------------<br/>");
        });
    }
});

另外,为了防止您的XML示例是完整的XML,如果不包含在单个根元素中,它就是无效的。即

<somerootelement>
    <identifier rownumber="1">
        <A.SOLUTION_ID>1001</A.SOLUTION_ID>
        <A.LIBRARY_GROUP><![CDATA[Business Managment 1]]></A.LIBRARY_GROUP>
        <A.LIBRARY_NAME><![CDATA[BM 01]]></A.LIBRARY_NAME>
    </identifier>

    <identifier rownumber="2">
        <A.SOLUTION_ID>1002</A.SOLUTION_ID>
        <A.LIBRARY_GROUP><![CDATA[Engineering]]></A.LIBRARY_GROUP>
        <A.LIBRARY_NAME><![CDATA[ENG 05]]></A.LIBRARY_NAME>
    </identifier>
</somerootelement>