在Firefox中使用jQuery解析XML的问题

时间:2012-07-12 08:21:43

标签: jquery xml firefox

我正在使用JavaScript / jQuery尝试解析通过AJAX Get请求获取的XML文档。我不能发布XML文档,但它格式正确,我正在寻找的标签存在。 AJAX请求成功并返回Chrome和Firefox中的完整XML文档 - 由于某种原因,我现在无法解析它。该代码适用于Chrome,但不适用于Firefox或IE。我现在对IE并不是很感兴趣,但我很遗憾为什么它不适用于Firefox。

JavaScript:

window.onload = function getGroupSets() {
$.ajax( {
    type: "GET",
    dataType: "application/xml",
    url: '../api/indicatorGroupSets.xml',
    success: function( xml ) {

        /*Find Indicator Group Set tags in XML file */

        alert($(xml).find('indicatorGroupSet').length);
        //This alert reads '0' in Firefox, '4' in Chrome
        //The following function is not executed in Firefox:

        $( xml ).find( 'indicatorGroupSet' ).each( function( ) {

            /*For each Set, get the name & ID*/

            var groupSet = {
                name: $( this ).attr( 'name' ),
                id: $( this ).attr( 'id' )
            };
            alert(groupSet.name);
            //Nothing displays here
        } );
    },
    error: function( jqXHR, textStatus, errorThrown ) {

        /*If an error occurs, alert the issue and a message to users */

        alert( jqXHR + ':' + textStatus + ':' + errorThrown + '\nThere has been an error, please refresh the page or contact the site administrator if the problem persists.' );
    }
} );
}

我一直在寻找解决方案,但一切似乎都是关于解析器在IE中不起作用的方式,而在Firefox中这个问题并不多。

我感谢任何意见!

1 个答案:

答案 0 :(得分:0)

尝试告诉jQuery您正在加载HTML。根据我的经验,jQuery无法在Firefox中遍历XML。某些未知的特定条件可能会触发此行为。

$.get("example.xml", function(data) {
    ....
}, "html");

如果您的文档包含名称空间,则必须使用localName属性遍历文档:

if (this.localName === "c:tagname") {
    ....
}

如果文档不包含名称空间,则可以使用普通的jQuery功能导航文档:

if ($(this).is("tagname")) {
    ....
}

远非漂亮,但完成工作。至少在Firefox中。 :)