如何使用ApacheVelocity进行XML转义?

如何使用ApacheVelocity进行XML转义?,xml,escaping,velocity,Xml,Escaping,Velocity,我正在使用ApacheVelocity生成XML。XML转义输出的最佳(最直接)方法是什么 (我看到有一个转义工具,但无法确定它的开发状态。我还认为XML转义很可能是Velocity直接支持的。) 如果您只需要避开选择性引用,则Escape工具也可以用于生产(工具的最终版本刚刚发布,但在此之前,它已经处于测试阶段2年(如果不是更长的话) 如何初始化velocity工具。 将velocity-tools.xml包含到项目中并启用所需的工具: <tools> <data

我正在使用ApacheVelocity生成XML。XML转义输出的最佳(最直接)方法是什么

(我看到有一个转义工具,但无法确定它的开发状态。我还认为XML转义很可能是Velocity直接支持的。)

如果您只需要避开选择性引用,则Escape工具也可以用于生产(工具的最终版本刚刚发布,但在此之前,它已经处于测试阶段2年(如果不是更长的话)

如何初始化velocity工具。

将velocity-tools.xml包含到项目中并启用所需的工具:

<tools> 
    <data type="number" key="TOOLS_VERSION" value="2.0"/>
    <data type="boolean" key="GENERIC_TOOLS_AVAILABLE" value="true"/>
    <toolbox scope="application">
        <tool class="org.apache.velocity.tools.generic.AlternatorTool"/>
        <tool class="org.apache.velocity.tools.generic.DisplayTool"/>
        <tool class="org.apache.velocity.tools.generic.MathTool"/>
        <tool class="org.apache.velocity.tools.generic.NumberTool"/>
        <tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/>
        <tool class="org.apache.velocity.tools.generic.ClassTool"/>
        <tool class="org.apache.velocity.tools.generic.ConversionTool"/>
        <tool class="org.apache.velocity.tools.generic.EscapeTool"/>
        <tool class="org.apache.velocity.tools.generic.FieldTool"/>
        <tool class="org.apache.velocity.tools.generic.ListTool"/>
        <tool class="org.apache.velocity.tools.generic.ResourceTool"/>
        <tool class="org.apache.velocity.tools.generic.SortTool"/>
    </toolbox>
    <toolbox scope="request">
        <tool class="org.apache.velocity.tools.generic.LoopTool"/>
        <tool class="org.apache.velocity.tools.generic.ContextTool"/>
        <tool class="org.apache.velocity.tools.generic.LinkTool"/>
        <tool class="org.apache.velocity.tools.generic.RenderTool"/>
    </toolbox>
</tools>

谢谢serg555,这让我很开心!serg555,你能告诉我,我如何使用属性配置(没有XML文件)添加转义工具吗?更新:我尝试了以下方法:p.setProperty(“tools.toolbox”,“请求,会话,应用程序”);p.setProperty(“tools.session.esc”、“org.apache.velocity.tools.generic.EscapeTool”);p.setProperty(“tools.request.esc”、“org.apache.velocity.tools.generic.EscapeTool”);p.setProperty(“tools.application.esc”、“org.apache.velocity.tools.generic.EscapeTool”);但这似乎不起作用。我做错了什么?@Jan Algermissen:我添加了一个如何初始化Tools 2.0的示例。没有xml是什么意思?应该有xml文件描述启用的工具(velocity tools已经包含默认xml文件,所有工具都已启用到其jar中,因此如果您不想在项目中使用此xml,只需加载默认xml文件,应该已经在类路径中)555-感谢您的帮助!
$esc.xml($var)
<tools> 
    <data type="number" key="TOOLS_VERSION" value="2.0"/>
    <data type="boolean" key="GENERIC_TOOLS_AVAILABLE" value="true"/>
    <toolbox scope="application">
        <tool class="org.apache.velocity.tools.generic.AlternatorTool"/>
        <tool class="org.apache.velocity.tools.generic.DisplayTool"/>
        <tool class="org.apache.velocity.tools.generic.MathTool"/>
        <tool class="org.apache.velocity.tools.generic.NumberTool"/>
        <tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/>
        <tool class="org.apache.velocity.tools.generic.ClassTool"/>
        <tool class="org.apache.velocity.tools.generic.ConversionTool"/>
        <tool class="org.apache.velocity.tools.generic.EscapeTool"/>
        <tool class="org.apache.velocity.tools.generic.FieldTool"/>
        <tool class="org.apache.velocity.tools.generic.ListTool"/>
        <tool class="org.apache.velocity.tools.generic.ResourceTool"/>
        <tool class="org.apache.velocity.tools.generic.SortTool"/>
    </toolbox>
    <toolbox scope="request">
        <tool class="org.apache.velocity.tools.generic.LoopTool"/>
        <tool class="org.apache.velocity.tools.generic.ContextTool"/>
        <tool class="org.apache.velocity.tools.generic.LinkTool"/>
        <tool class="org.apache.velocity.tools.generic.RenderTool"/>
    </toolbox>
</tools>
ToolManager velocityToolManager = new ToolManager();
velocityToolManager.configure("velocity-tools.xml");
VelocityContext context = new VelocityContext(velocityToolManager.createContext());