首先,我的输入格式不正确。所以基本上我有一堆标签。我如何使用JavaScript/Regex提取<message>
标记之间的所有值?提取标签之间的所有值
输入:
<bad xml doc>
<a>dsda</a>
<message>hi</message>
<b></b>
<c>dsds</c>
<message>get this message too</message>
输出:
喜
得到这个消息太
首先,我的输入格式不正确。所以基本上我有一堆标签。我如何使用JavaScript/Regex提取<message>
标记之间的所有值?提取标签之间的所有值
输入:
<bad xml doc>
<a>dsda</a>
<message>hi</message>
<b></b>
<c>dsds</c>
<message>get this message too</message>
输出:
喜
得到这个消息太
您可以使用match与全球标志:
var messages = text.match(/<message>(.*?)<\/message>/g).map(function (m) {
return m.slice(9, -10);
})
console.log(messages.join('\r\n'));
var text = '<bad xml doc>\
<a>dsda</a>\
<message>hi</message>\
<b></b>\
<c>dsds</c>\
<message>get this message too</message>';
var messages = text.match(/<message>(.*?)<\/message>/g).map(function (m) {
return m.slice(9, -10);
});
window.alert(messages.join('\r\n'));
var re = /<message>(.*)<\/message>/gm;
var str = '<bad xml doc>\n <a>dsda</a>\n <message>hi</message>\n<b></b>\n <c>dsds</c>\n<message>get this too</message>';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
的jQuery实际上是解析和遍历XML真的好以及HTML。该策略将创建一个与你的坏XML的jQuery对象,然后你可以使用CSS选择器来查询。
例如,以提醒第一消息中的文本:
var badDoc = $('<bad xml doc><a>dsda</a><message>hi</message><b></b><c>dsds</c><message>get this too</message>');
alert(badDoc.find('message')[0].innerHTML);
哪里XML从哪里来? – 2014-11-06 21:58:01
一个* malformated *文件永远不能正确解析。不要试图解决这些症状。修复原因! – dognose 2014-11-06 22:02:09
它是连接成一个长字符串的错误消息,因此它包含许多xml消息以及文本。我只是试图把它作为一个文本输入,并使用js /正则表达式来获得标签 –
gishman
2014-11-06 22:05:52