【问题标题】:how to query xml to find a node value in an xml with javascript?如何使用 javascript 查询 xml 以在 xml 中查找节点值?
【发布时间】:2013-01-12 03:30:41
【问题描述】:
如何从下面的 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>
【问题讨论】:
标签:
javascript
xml
xml-parsing
【解决方案1】:
假设您的平台是一个可以使用 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> ]