如何查询xml以使用javascript在xml中查找节点值?

时间:2013-01-12 03:30:41

标签: javascript xml xml-parsing

从下面的xml如何查找存在值为docx且属性indexed = 1的节点? 我不想使用循环,这需要在JavaScript中完成

<docs>
  <doc>
    <name indexed='1'>doc</name>
  </doc>
  <doc>
    <name indexed='1'>xls</name>
  </doc>
  <doc>
    <name indexed='0'>xlsx</name>
  </doc>
  <doc>
    <name indexed='1'>docx</name>
  </doc>
  ..
  ..
</docs>

1 个答案:

答案 0 :(得分:1)

假设您的平台是Web浏览器,您可以使用jQuery:

var xml = '<docs>\n<doc>\n<name indexed="1">doc</name>...</docs>';
var docxIndexed1 = $(':contains("docx")', xml).find('[indexed=1]');

docxIndexed1; // => [ <name indexed=​"1">​docx​</name>​ ]

或者如果你不想使用jQuery而只想使用built in DOMParser

var xml = '<docs>\n<doc>\n<name indexed="1">doc</name>...</docs>'
  , parser = new DOMParser()
  , doc = parser.parseFromString(xml, 'application/xml')
  , elements = [].slice.apply(doc.getElementsByTagName('*'));
var docxIndexed1 = elements.filter(function(x) {
  return (x.textContent === 'docx') && (x.getAttribute('indexed') === '1')
});

docxIndexed1; // => [ <name indexed=​"1">​docx​</name>​ ]