使用jquery仅访问XML DOM中具有共享名称的一个元素

时间:2009-08-03 18:03:28

标签: javascript jquery xml

我只访问一个与其他元素同名的XML元素(在这种情况下,标记为“name”)。如何使用jQuery访问下面的“wantedName”?

<sample>
<input>
    <value>0.2</value>
    <name>varName</name>  
</input> 
<name>wantedName</name> 
<output> 
    <value>4</value> 
    <name>varName2</name> 
</output>
</sample> 

使用$(xml).find(“name”)返回包含[varName,wantedName,varName2]的数组。不幸的是,我不能只是求助于访问第一个索引,因为xml是动态的,所以我不确定“wantedName”将在哪个索引处。

我想通过执行“如果这有一个名为<sample>的直接父级,获取它,否则忽略”来访问“wantedName”。

3 个答案:

答案 0 :(得分:1)

假设xml的结构总是看起来像给出的示例(其中name直接在输入标记之后),我认为这可能有效

$(xml).find("input + name");

答案 1 :(得分:0)

据推测,您想要检索name的子标记,但那些sample的子标记或任何其他标记的标记?< / p>

如果是这样,这应该有效:

input

答案 2 :(得分:0)

$(xml).find("input > name").text()应该可以正常工作,假设你正在使用xml作为dom的一部分,而不仅仅是一个字符串。这是因为'input'是html中的标签名称。

如果您正在使用字符串,这里是parseXml function I found quickly,并在FF 3中进行测试。因此,解析您的字符串,然后通过jquery遍历它。

function parseXML(xml) {
    if (window.ActiveXObject && window.GetObject) {
        var dom = new ActiveXObject('Microsoft.XMLDOM');
        dom.loadXML(xml);
        return dom;
    }
    if (window.DOMParser)
        return new DOMParser().parseFromString(xml, 'text/xml');
    throw new Error('No XML parser available');
} 

修改

这也可以在不解析为xml的情况下工作,假设你的xml没有改变。

$(xml).find("name:first").text();