Ignorando el símbolo & en la deserialización JAXB (Java 1.8)
Estoy tratando de deserializar un XML que tiene un esquema más o menos así:
<xs:complextype>
<xs:sequence>
<xs:element name="type" type="xs:int" minoccurs="0"></xs:element>
<xs:element name="scope" type="xs:int" minoccurs="0"></xs:element>
<xs:element name="code" type="xs:int" minoccurs="0"></xs:element>
<xs:element name="target" type="xs:string" minoccurs="0"></xs:element>
<xs:element name="message" type="xs:string" minoccurs="0"></xs:element>
</xs:sequence>
</xs:complextype>
Utilizo este formato de XML para pasar mensajes en JMS.
Mi problema es que, ocasionalmente, la etiqueta del mensaje contiene una cadena que contiene “&” (por ejemplo: Tom & Jerry). Sé que XML prefiere que sea así “&”. ¿Pero hay alguna manera de ignorar “&” durante la deserialización? Actualmente, está lanzando una excepción:
[org.xml.sax.SAXParseException; lineNumber: 163; columnNumber: 45; The reference to entity "T" must end with the ';'
Cualquier consejo sobre esto sería útil. Puedo hacer cierta manipulación de cadenas, como buscar “&” y reemplazarlo con “&”, y una vez deserializado, simplemente agregar “&” de nuevo. Pero no estoy seguro si funcionaría al 100%.
davy.ai
Es posible ignorar
&
durante el unmarshalling. Puede usar la anotación@XmlUnescaped
para indicarle al unmarshaller que no escape el carácter&
. Por ejemplo:Esta anotación le indicará al unmarshaller que no escape el carácter
&
, lo que evitará que ocurra laSAXParseException
.