2012-04-04 15 views
0

Ich möchte, dass während der Marshelling Sonderzeichen sollte entkommen, gibt es eine Möglichkeit, dies zu tun?Escaping Sonderzeichen mit JiBX (Un) Marshalling

alt="<i><b> image alt</b></i>" 

diese gespeichert wird als

&lt;b>&lt;i>image alt&lt;/b>&lt;/i> 

i Wert speichern möchten, wie es

Antwort

1

ist Wenn Sie etwas als XML speichern, müssen Sie die Zeichen entkommen. Andernfalls Sie XML wird ungültig:

<xml>text</xml> 

if test == </xml> the XML will be clearly invalid: 

<xml></xml></xml> 

Dies muss sein:

<xml>&lt;/xml></xml> 

Wenn Sie es entordnen, sollte es den richtigen Wert wieder werden.

Sie auch CDATA

+0

Ich stieß auf das gleiche Problem und unmarshalling nicht konvertieren < zurück zu <. Aber Hinweis auf CDATA war hilfreich, danke. – uthomas

1

Ich dachte, ich meine Erfahrung teilen, weil Antworten, die ich gefunden wurden nicht alle Informationen verlassen (und ich bin immer noch nicht recht sicher, ob dies ist die professionelle Lösung gibt) verwenden.

In unserem Projekt verwenden wir Maven-JiBX-Plugin zu POJOs von XSDs (in zwei Läufen wie gewohnt zu generieren: 1. * .xsd-> binding.xml, dann 2. binding.xml-> * .java).

Basierend auf documentation of value node und Dennis Sosnoski's answer auf JiBX Mailingliste hinzugefügt I xml-Maven-Plugin zu unserem Projekt Build-Prozess. Ich verwende es, um eine XSL-Datei auf generierte binding.xml vor der POJO-Generierung anzuwenden. Der Punkt besteht darin, den Wert des Stilattributs auf dem entsprechenden Wertknoten von Text in cdata zu ändern.

Bisher es Nähte es meine Codierung Problem gelöst und jetzt kann ich an den Client xmls zurückkehren wie:

<Description><![CDATA[<strong>Valuable content goes here</strong>...<br />]]></Description> 

Hope this someones Leben leichter macht. :)