2010-06-09 4 views
7

Ich erzeuge XML mit Apache Velocity. Was ist der beste (einfachste) Weg zur XML-Ausgabe?Wie kann XML mit Apache Velocity entkommen?

(Ich sah dort ein Fluchtwerkzeug, kann aber nicht, dass es dev Zustand herauszufinden. Ich denke auch, dass XML Entkommen ist etwas, das sehr wahrscheinlich von Geschwindigkeit direkt unterstützt wird.)

Antwort

10

bei event handlers Werfen Sie einen Blick.

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

Escape-Tool ist eine Produktion bereit auch wenn Sie nur selektive Referenzen entkommen müssen (endgültige Version von Werkzeugen erst vor kurzem veröffentlicht wurde, aber es war in der Beta-Phase vor, dass für 2 Jahre, wenn nicht länger)

$esc.xml($var) 

Wie Init Velocity-Tools.

Fügen anschlag tools.xml in Ihr Projekt und die erforderlichen Tools ermöglichen:

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

Dann wie Geschwindigkeit Kontext Schaffung Verfahren aussehen:

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

Dank serg555, das macht meinen Tag! –

+0

serg555, können Sie mir sagen, wie ich Escape-Tool mit Eigenschaftskonfiguration (ohne eine XML-Datei) hinzufügen? –

+0

Update: Ich habe folgendes versucht: p.setProperty ("tools.toolbox", "Anfrage, Sitzung, Anwendung"); \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"); Aber das scheint nicht zu funktionieren. Was mache ich falsch? –