【发布时间】:2011-05-26 11:00:18
【问题描述】:
我必须处理有时包含未转义 & 符号的 XML 数据,我无法让生产者将其转义到 & 或将其放入 CDATA 部分。
现在我正在寻找一个正则表达式将 & 替换为 & amp;如果它不是实体的一部分。像这样:&(?!(amp|apos|quot|lt|gt);)
不幸的是,我的编程环境只支持“扩展 POSIX 1003.2 正则表达式”(参见http://www.kernel.org/doc/man-pages/online/pages/man7/regex.7.html),它似乎缺少非运算符“!”这里需要。
任何想法如何制作必要的正则表达式?
【问题讨论】:
-
正确的“XML-ish”响应是通过验证器运行它,并拒绝为“格式不正确的 XML”。遗憾的是,XML 的设计者不允许在现实世界中我们有时不得不忍受糟糕的输入并使用它。
-
@Spudley:我确实通过验证器运行 XML 文件。这就是我注意到畸形部分的方式。不幸的是,它是一个产生无效 XML 的 Microsoft 产品,对他们来说,“标准”似乎意味着“可选”。
-
呵呵。微软啊?那数字。 (题外话,由于商业支持是管理层经常购买微软的原因,我想知道微软是否准备好为你修复它?当然不会。