首页 > 解决方案 > 从 Apache Velocity 1.5 更新到 2.2 会导致解析错误

问题描述

我将一个项目从velocity 1.5 更新到2.2,现在我们的集成测试出现了一些故障。例如,作为 XML 一部分的 #xpointer 标记会导致 ParseException。用 \#xpointer 转义它后,问题就解决了。但#xpointer 不是速度命令。为什么它被识别为命令?是否可以让速度忽略它而不逃避?为什么它在 1.5 版中没有出现问题?

xlink:href="urn:uuid:#xpointer(//foo:Bar

标签: xmlvelocity

解决方案


2.x 解析器引入了几个新特性,在某些极端情况下可能会造成问题。

由于 Velocity 允许定义自定义宏,因此解析器现在不会在运行时确定是否#xpointer是宏。当它导致解析错误时,它可以决定按原样呈现它,但这可能会导致忽略值得报告的真实解析错误。

如果您想质疑这种行为,您可能需要打开一个问题

作为一种解决方法,#您还可以告诉 Velocity 忽略模板的特定部分,而不是转义每个 individual :

#[[ ... #xpointer(...) ... ]]#

推荐阅读