# Ungleiches Escaping beim Marshalling



## Wiplash4 (5. Nov 2022)

Ich habe ein merkwürdiges Problem. Ich verwende einen JBoss eap 7.3. Ich versuche einen xml String umzuwandeln via einem Marshaller.
Ich erwartete

```
<cDataString>&lt;Inhalt&gt;Teststring&lt;/Inhalt&gt;</cDataString>
```
, aber statt dessen kam

```
<cDataString>&lt;Inhalt>Teststring&lt;/Inhalt></cDataString>
```
. Wie kann es sein dass nur '<', aber nicht '>' richtig dargestellt wird?


```
public static String convertClassToXML(Class<?> c, Object o)
{
    final StringWriter sw = new StringWriter();
    JAXBContext.newInstance().createMarshaller().marshal(o);
    return sw.toString();
}
```

Was könnte solch einen Zustand herbeirufen? Hat das überhaupt mit dem JBoss zu tun?




__





						[CXF-7905] JAXBUtils fails to setEscapeHandler due to null escapeHandler - ASF JIRA
					






					issues.apache.org


----------



## Oneixee5 (5. Nov 2022)

Ich denke es ist gar nicht nötig > zu escapen.


----------



## Robert Zenz (5. Nov 2022)

Das ist richtig, XML 1.1 (Second Edition):



> The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they MUST be escaped using either numeric character references or the strings "&amp;" and "&lt;" respectively. The right angle bracket (>) may be represented using the string "&gt;", and MUST, for compatibility, be escaped using either "&gt;" or a character reference when it appears in the string "]]>" in content, when that string is not marking the end of a CDATA section.



Also nur "&" und "<" muessen immer escaped sein. ">" kann escaped sein, muss aber nur dann escaped sein in einem CDATA-Block wenn es den String "]]>" bildet welcher nicht das Ende des CDATA-Blocks ist.


----------



## Wiplash4 (5. Nov 2022)

Danke für die Info. Allerdings will ich '>' escapen. Wie biege ich meinen Jboss so hin, dass er das konsistent macht? Beim Websphere machte er nämlich noch ohne weiteres.


----------



## Oneixee5 (5. Nov 2022)

Ich verstehe nicht, warum man so etwas unbedingt durchsetzen will, noch dazu wo es keine Rolle spielt und eigentlich jeder Parser damit klar kommt. Genau deswegen gibt es Standards. Du könntest aber einen Servlet-Filter erstellen, welcher das übernimmt.


----------



## Wiplash4 (6. Nov 2022)

Wie macht man das via web.xml?


----------



## Oneixee5 (6. Nov 2022)

Wiplash4 hat gesagt.:


> Wie macht man das via web.xml?


Ja das ist möglich aber nicht mehr so üblich. Man kann das auch per Annotation machen.


----------



## Wiplash4 (6. Nov 2022)

Wie?


----------



## Oneixee5 (6. Nov 2022)

Wiplash4 hat gesagt.:


> Wie?







__





						Laden…
					





					www.oracle.com
				







__





						javax.servlet-api 4.0.1 javadoc (javax.servlet)
					






					javadoc.io


----------

