在JavaScript中解析和转换XML字符串

时间:2014-07-22 09:35:43

标签: javascript jquery xml

我简化了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中执行此操作的最简单或最佳方法是什么?

1 个答案:

答案 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('');
}