2010-06-09 5 views
7

Je génère du XML en utilisant Apache Velocity. Quel est le meilleur moyen (le plus direct) d'échapper à la sortie XML?Comment échapper XML avec Apache Velocity?

(j'ai vu il y a un outil d'évasion, mais ne pouvait pas comprendre son état dev. Je pense aussi que Escaping XML est quelque chose qui est très probablement soutenue par Velocity directement.)

Répondre

10

Jetez un oeil à event handlers.

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

outil Escape est une production prête aussi bien si vous avez besoin pour échapper que des références sélectives (version finale des outils a été publié tout récemment, mais il était en phase bêta avant que pendant 2 ans sinon plus)

$esc.xml($var) 

Comment initier les outils de vélocité.

Inclure la vitesse-tools.xml dans votre projet et activer les outils nécessaires:

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

procédure de création de contexte alors la vitesse ressemblerait à ceci:

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

Merci serg555, qui fait ma journée! –

+0

serg555, pouvez-vous me dire, comment j'ajouter outil Escape en utilisant la configuration de la propriété (sans un fichier XML)? –

+0

Mise à jour: J'ai essayé ce qui suit: p.setProperty ("tools.toolbox", "request, session, application"); \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"); Mais cela ne semble pas fonctionner. Qu'est-ce que je fais mal? –

Questions connexes