首先,我输入的XML不是很好。所以基本上我有一堆标签。如何使用javascript / Regex提取<message>
标记之间的所有值?
输入:
<bad xml doc>
<a>dsda</a>
<message>hi</message>
<b></b>
<c>dsds</c>
<message>get this message too</message>
输出:
喜
也得到这个消息
答案 0 :(得分:0)
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.
}
答案 1 :(得分:0)
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);
答案 2 :(得分:0)
您可以将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'));