我只访问一个与其他元素同名的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”。
答案 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();