2010-08-18 62 views
0

我有一些XML像jQuery和XML问题

<entry> 
    <a>a</a> 
    ... 
    <subelement> 
     <b>b</b> 
     .... 
    </subelement> 
</entry> 

,如果我做$(项).find( 'whatIAmLookingFor')

它适用于一些元素,但不能用于其他元素时,这些元素嵌套在子元素中。

我可以让它做

$(entry).find('subelement').children()[indexofwhatiamlookingfor].textContent; 
在Firebug

工作,但显然这是一个黑客...

为什么会“发现”找到一个子元素的一些元素,但不是别人?我让另一位开发人员看一下,以确保我的元素名称正确(没有胖手指问题)。

+0

这些元素的名称是什么?如果它们是HTML中有效的元素名称,则某些浏览器有问题。 – 2010-08-18 15:55:40

+0

在子元素中找不到名字,姓氏,电子邮件地址,位置和组织是 – hvgotcodes 2010-08-18 16:00:46

回答

2

jQuery不解析XML。你可以使用下面的简单函数来做到这一点,并使用jQuery在文档上执行其通常的查询内容:

var parseXml; 

if (window.DOMParser) { 
    parseXml = function(xmlStr) { 
     return (new window.DOMParser()).parseFromString(xmlStr, "text/xml"); 
    }; 
} else if (typeof window.ActiveXObject != "undefined" && 
     new window.ActiveXObject("Microsoft.XMLDOM")) { 

    parseXml = function(xmlStr) { 
     var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = "false"; 
     xmlDoc.loadXML(xmlStr); 
     return xmlDoc; 
    }; 
} else { 
    parseXml = function() { return null; } 
} 

var xml = parseXml("<foo>Stuff</foo>"); 
if (xml) { 
    var $xmlDoc = $(xml); 
    window.alert($xmlDoc.find("foo")[0].nodeName); 
}