xml - 从 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
解决方案
2.x 解析器引入了几个新特性,在某些极端情况下可能会造成问题。
由于 Velocity 允许定义自定义宏,因此解析器现在不会在运行时确定是否#xpointer
是宏。当它导致解析错误时,它可以决定按原样呈现它,但这可能会导致忽略值得报告的真实解析错误。
如果您想质疑这种行为,您可能需要打开一个问题。
作为一种解决方法,#
您还可以告诉 Velocity 忽略模板的特定部分,而不是转义每个 individual :
#[[ ... #xpointer(...) ... ]]#
推荐阅读
- java - java - 如何根据Optional对Java中另一个不同对象的null检查返回不同的对象?
- arrays - 使用传递给另一个函数的指针访问结构数组时程序崩溃
- reactjs - 在 Ag-grid 上拖动开始时如何选择行?
- git - 将工作树与远程仓库进行比较时,git diff 中的 a vs. b 是谁?
- python - 为什么socket会断开连接?
- ios - 使用 Sprite Kit 时如何将自定义行为与 Xcode UI 预定义精灵混合
- r - 在条形图中并排显示两个 y 轴
- python - 我如何让不和谐的机器人检查你是什么服务器?
- chef-infra - Chef Infra Server 没有登录名?
- javascript - 无法访问 forEach 循环 JavaScript 之外的变量