Java, UnmarshallingException causée par l'attribut XML avec les caractères spéciaux:;! IE + oua - <^ èç ° § _> £ $% & / () = ~ ` '#;

StackOverflow https://stackoverflow.com/questions/2681732

Question

mon fichier xml a une balise avec un attribut « containsValue » qui contient les caractères « spéciaux » vous pouvez voir dans le sujet:

<original_msg_body id="msgBodySpecialCharsRule" containsValue=";ìè+òàù-<^èç°§_>!£$%&/()=?~`'#;" />

dans mon schéma xml l'attribut a xs: string:

<xs:attribute name="containsValue" type="xs:string"  />

J'utilise cette valeur à l'intérieur d'un logiciel Java qui vérifie si cette valeur est contenue dans une autre chaîne.

mais j'obtiens toujours cette exception:

javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: The value of attribute "containsValue" associated with an element type "original_msg_body" must not contain the '<' character.]

Comment puis-je résoudre? Je l'ai essayé de changer le type d'attribut à xs: NMTOKEN, ut je reçois la même exception. Y at-il autre type?

Je pense que je pourrais changer les encodage de caractères, par exemple en utilisant la représentation HTML, comme <, mais que ce qui pourrait être difficile pour la comparaison de chaînes ...

Était-ce utile?

La solution

Vous devez échapper à des entités XML spéciales comme <, >, " avec &lt;, &gt;, &quote;

Autres conseils

Utiliser des références d'entité: remplacer < avec &lt; et > avec &gt etc. dans votre document XML. Votre analyseur XML sera ensuite gérer la conversion entre le caractère réel et sa référence d'entité. C'est, dans votre code que vous obtenez le caractère < réelle ou >.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top