从下面的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>
答案 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> ]