我简化了xml,只有标签,没有属性没有prolog,也没有名称空间,其中标签是颜色,如
<red>hello <blue>blue</blue> world</red>
我需要将其转换为列表:
<red>hello </red><blue>blue</blue><red> world</red>
实际上我需要:
[[;red;]hello ][[;blue;]blue][[;red;] world]
在jQuery的帮助下,在JavaScript中执行此操作的最简单或最佳方法是什么?
答案 0 :(得分:0)
我使用基于堆栈的解析函数,使用正则表达式分割成令牌。
function(string) {
var stack = [];
var output = [];
var parts = string.split(/(<\/?[a-zA-Z]+>)/);
for (var i=0; i<parts.length; ++i) {
if (parts[i][0] == '<') {
if (parts[i][1] == '/') {
if (stack.length) {
stack.pop();
}
} else {
// get name of the tag
stack.push(parts[i].replace(/^<|>$/g, ''));
}
} else {
if (stack.length) {
// top of the stack
output.push('[[;' + stack[stack.length-1] + ';]');
}
output.push(parts[i]);
if (stack.length) {
output.push(']');
}
}
}
return output.join('');
}