说我有这样的xml:
<outer>
<inner name="name0" type="type0" />
<inner name="name1" type="type1" />
<inner name="name2" type="type2" />
</outer>
我正在使用jquery解析xml并且我在外部标记的每个循环中:
$(xml).find('outer').each(function() {
//what goes here?
});
说我知道可以出现在<inner>
的名称ID中的值。在上面的代码中,我如何从给定的<inner>
标记中获取适当的类型。
示例:
我有字符串var name = "name1"
在每个循环中,我需要从名称=“name1”的type1
标记中提取<inner>
。感谢
答案 0 :(得分:3)
我正在使用jquery
解析xml
不是真的。 $()
不包含XML解析器;您使用浏览器的innerHTML
解析器将其解析为HTML。因为您的输入不是有效的HTML,所以您可能会将任何旧的奇怪DOM作为输出,尤其是在IE中,它不喜欢自定义元素。
以跨浏览器的方式获取XML解析器非常棘手;它比XMLHttpRequest
返回XML文档的支持要少得多。在许多现代浏览器中,您可以要求new DOMParser
,但对于IE,您必须创建一个MSXML2.DOMDocument
ActiveXObject,对于一些较旧的浏览器,您必须document.implementation.createDocument
(甚至是load
{1}}方法不是标准的或者无处不在。)
答案 1 :(得分:0)
您可以使用attribute-equals selector,如下所示:
var name="name1";
$(xml).find('outer').each(function() {
var type = $(this).children("[name='" + name + "']").attr("type");
//use type
});
You can give it a try here,如果XML 完全您发布的内容而不是子集,只需删除.find('outer')
,因为根元素已经是您想要的位置。
答案 2 :(得分:0)
var name = "name1";
$(xml).find('outer').each(function() {
var type = $(this).children('[name=' + name + ']').attr('type');
});