使用JavaScript从XML字符串中提取值

时间:2019-03-10 11:33:47

标签: javascript xml

我面临以下问题:

给我一​​个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];

2 个答案:

答案 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]));

或在第一行匹配整个标签。