2010-06-09 9 views
7

Estoy generando XML usando Apache Velocity. ¿Cuál es la mejor (más directa) forma de escapular XML de la salida?Cómo escanear XML con Apache Velocity?

(vi existe una herramienta de escape, pero no pudo averiguar su estado prog. Yo también creo que el escape XML es algo que es muy probable que el apoyo de la velocidad directamente.)

Respuesta

10

Tome un vistazo a event handlers.

eventhandler.referenceinsertion.class = org.apache.velocity.app.event.implement.EscapeXmlReference 

herramienta de escape es una producción listo, así si necesita escapar únicas referencias selectivas (versión final de las herramientas fue lanzado hace poco, pero estaba en fase beta antes de eso durante 2 años si no más)

$esc.xml($var) 

Cómo iniciar las herramientas de velocidad.

incluyen la velocidad-tools.xml en su proyecto y permitir herramientas necesarias:

<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> 

Entonces exámenes de velocidad de creación del contexto se vería así:

ToolManager velocityToolManager = new ToolManager(); 
velocityToolManager.configure("velocity-tools.xml"); 
VelocityContext context = new VelocityContext(velocityToolManager.createContext()); 
+0

Gracias serg555, que hace que mi día! –

+0

serg555, ¿Puede decirme cómo agrego la herramienta de escape usando la configuración de propiedad (sin un archivo XML)? –

+0

Actualización: Intenté lo siguiente: p.setProperty ("tools.toolbox", "solicitud, sesión, aplicación"); \t \t \t p.setProperty ("tools.session.esc", "org.apache.velocity.tools.generic.EscapeTool"); \t \t \t p.setProperty ("tools.request.esc", "org.apache.velocity.tools.generic.EscapeTool"); \t \t \t p.setProperty ("tools.application.esc", "org.apache.velocity.tools.generic.EscapeTool"); Pero eso no parece funcionar. ¿Qué estoy haciendo mal? –