-1

从下面的 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>
4

1 回答 1

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​&lt;/name>​ ]

或者,如果您不想使用 jQuery 而只使用内置的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​&lt;/name>​ ]
于 2013-01-12T06:48:24.970 回答