J'ai besoin de sérialiser un objet XML Java à un fichier XML à l'aide du Marshaller JAXB (version 2.2 JAXB). Maintenant, dans l'objet XML, j'ai une balise contenant "<"tagA>
**"<"YYYYY>done"<"/YYYYY>**
"<"/tagA>
5 Réponses :
Vous pouvez exploiter la structure CDATA. Jaxb standard ne couvre pas cette structure. Il y a une extension dans Eclipselink Jaxb (Moxy) pour cela (je suis la technologie mener). Consultez ma réponse à une question connexe:
Merci pour votre réponse Blaise. Je vais explorer celui-ci à coup sûr car il semble intéressant. Cependant, j'ai trouvé une solution pour mon problème que je pose ci-dessous ..
fait en définissant la propriété suivante pour le Marshaller JAXB:
marshaller.setProperty("jaxb.encoding", "Unicode");
Pouvez-vous s'il vous plaît élaborer sur votre usage pour échapper au personnage. Je ne suis pas capable de le faire avec JUS la propriété définie sur Unicode.
Pour élaborer la même chose, je venais de définir la propriété suivante sur le Marshaller: Marshaller.seproperty ("Jaxb.encoding", "Unicode"); marshaller.seproperty (marshaller.jaxb_formatted_output, vrai); marshaller.setProperty (caractéristiquesCapepwherler.class.getName (), Nouveau CustomCharacterSescapeHandler ());
Ici, dans la troisième déclaration, comme vous pouvez le constater, j'avais créé une classe CustomCharacterSescapeHandler qui fait la manipulation des personnages d'échappement. Vous pouvez trouver son code facilement sur le net en recherchant «Comment remplacer la méthode d'échappement de CaractèreHandler». Au cas où vous auriez besoin du code, demandez-moi ..
Selon ce que vous recherchez exactement, vous pouvez soit: p>
Il y a un moyen plus simple. Première utilisation Séquence d'évacuation personnalisée: puis le marshal à une chaîne comme mentionné ci-dessous p> puis créer un objet de document de l'auteur mentionné ci-dessous p> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource( new StringReader( writer.toString() ) );
Document doc = builder.parse( is );
Le problème de cette approche est que vous ne pouvez pas construire l'application avec OpenJDK. com.sun.xml.internal.bind.marshaller.CharacterescapeHandler appartient à Sun JDk.
Vous pouvez utiliser com.sun.xml.bind.marshaller.charsterescapewherler
@ user2814648 com.sun.xml.bind.marshaller.charsterscapepapeHandler n'est pas sur la classe de classe. Au moins pas pour moi. Dans quelle bibliothèque est-ce?
avec Jaxb Marshaller Si vous voulez un contrôle total sur lequel les caractères s'échapper (par exemple, "\ '"), vous devrez ajouter une propriété: et créer une nouvelle classe CustomCharacterSEcpeHandler P > espère que cela aide. p> p>
Je pense que vous êtes manquant && isattval en c == '\' '.