我面临以下问题:
给我一个XML字符串和一条消息(字符串),我需要一个函数,该函数可以解析XML字符串并返回存在消息的XML标签(id =“ x”)的ID数组。 / p>
我只能为此使用JavaScript。
function getIdByMessage(xml, message) {
// problem to solve
}
var xml = `
<test>blabla</test>
<otherstuff>MoreStuff</otherstuff>
<message-not-relevant>Not relevant</message-not-relevant>
<entry id="4">Function Message<entry>
<otherstuff>MoreStuff</otherstuff>
<message-not-relevant>Not relevant</message-not-relevant>
<entry id="3">Function Message<entry>
<otherstuff>MoreStuff</otherstuff>
<message-not-relevant>Not relevant</message-not-relevant>
`
getIdByMessage(xml, 'Function Message'); // should return [4, 3];
答案 0 :(得分:0)
首先将XML解析为DOM:例如,参见Parse XML using JavaScript
然后,在生成的DOM Document对象上,执行XPath表达式
//entry[. = 'Function Message']/@id
这将返回一组属性节点。
答案 1 :(得分:-1)
根据xml中的内容,您不必解析它。您可能仅通过搜索id =“ number”
就可以摆脱困境例如:
let matches = xml.match(/id="[\d]+"/gm);
let entryIds = matches.map(m => m.match(/\d+/)[0]));
或在第一行匹配整个标签。