正则表达式和xml

时间:2011-06-12 12:59:38

标签: javascript xml regex

有时候,我必须处理不完善的xml(没有root)。所以我取第一个节点名称(在本例中为“error”)并构成一个正则表达式模式:"</error>$"问题是它与以下字符串匹配为true。 (</error>是该行的结尾)

<error>0</error>

<roles>
    <role rid="12" title="User" description="Hello world"></role>
    <role rid="11" title="Admin" description="Hello world2"></role></roles>

在查看了一些参考文献后,我尝试</error>\z</error>\Z。但它不起作用。 请帮我解决问题

P.S。如果有更好的解决方案,我会非常高兴。目标环境是javascript。

2 个答案:

答案 0 :(得分:4)

如果唯一让你的XML格式不正确的是它缺少root,那么修复很简单 - 只需添加一些根元素然后解析它并将其作为普通XML使用。

xml = '<root>' + xml + '</root>';

You really shouldn't try to parse XML with regular expressions.

答案 1 :(得分:1)

你是对的。不幸的是,javascript不支持\ A和\ Z锚点。考虑使用最后10个字符的子字符串和正则表达式(这可能更有效。)

否则,如果</error>结束标签后面有任何非空格,请尝试匹配该表达式。

[\s\S]*</error>(?=\s*\S)