如何在IE8中使用Jquery解析包含非html标记的XML

时间:2011-07-08 15:19:15

标签: javascript jquery xml internet-explorer

<script type="text/javascript">

var data='<newtag><othertag attr1="abc" /></newtag>';
var foo = $(data).children('othertag');
var result = foo.attr('attr1');

alert(result);

</script>

在Mozilla firefox上,此代码不会导致任何问题,但在Internet Explorer“newtag”和“othertag”是HTMLUnkownElements,因此无法正确解析它们。它不会比“newtag”更进一步。

我查了一下并尝试添加parseXml:

<script type="text/javascript">

function parseXml(xml)
{
    if (jQuery.browser.msie)
    {
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.loadXML(xml);
        xml = xmlDoc;
    }
    return xml;
}

var data= parseXml('<newtag><othertag attr1="abc" /></newtag>');
var foo = $(data).children('othertag');
var result = foo.attr('attr1');

alert(result);

</script>

但没有运气。使用Mozilla,我在警报中获得“abc”,使用IE,我得到“未定义”。

任何在IE中解决此问题的方法,还是我必须使用除jQuery以外的其他东西来解析xml?

请注意,在实际情况中,从服务器收到大量的xml数据并且解析比这更精细,jQuery非常有用。我也在使用jQuery 1.5,但1.6并没有什么区别。

1 个答案:

答案 0 :(得分:3)

您可以使用parseXML

var xml = "<newtag><othertag attr1='abc'/></newtag>",
    xmlDoc = $.parseXML( xml ),
    $xml = $( xmlDoc ),
    $title = $xml.find( "othertag" ).attr("attr1");

alert($title);

这是fiddle