jquery xml解析问题

时间:2010-09-01 17:14:03

标签: javascript jquery xml

说我有这样的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>。感谢

3 个答案:

答案 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');
});