Velocity模板可安全生成XML,需显式声明UTF-8编码、用#escape.xml()转义动态内容、避免属性值未转义、区分注释语法、CDATA内不解析Velocity语法,并设置Content-Type响应头。
Velocity 模板引擎本身不强制输出任何特定格式,但可以安全、规范地生成 XML 内容,关键在于正确处理字符转义、编码声明和结构合法性。
在模板开头显式写出 XML 声明,并指定 UTF-8 编码(推荐),避免解析器因默认编码不一致报错:
Velocity 自带的 #escape.xml() 工具方法会将特殊字符(如 、>、&、"、')转换为对应 XML 实体,防止破坏结构或引发注入问题:
#escape.xml($book.title) #escape.xml($book.author)$book.content (若 content 含 会破坏 XML)Velocity 的 # 和 $ 符号本身不会干扰 XML,但需
注意:
→ 改用 )## 这是 Velocity 注释,而非 XML 注释 (除非你明确需要它出现在输出中) → 此处 $x 不会被替换若通过 Web 框架(如 Spring MVC)渲染 Velocity 输出 XML,需确保 HTTP 响应头包含:
Content-Type: application/xml; charset=UTF-8否则浏览器或客户端可能误判编码或 MIME 类型。