2017-06-17 4 views
1

J'utilise la version 2.0.6 jdom et reçu ce IllegalDataException:Comment résoudre l'exception IllegalDataException dans la bibliothèque jdom2?

Error in setText for tokenization: 

il échoue à appeler la méthode setText().

Element text = new Element("Text"); 
text.setText(doc.getText()); 

Il semble que certains caractères dans le 'texte' ne l'acceptent pas. Pour deux exemples:

Originally Posted by Yvette H(45) Odd socks, yes, no undies yes, no coat yes, no shoes odd. 
ParryOtter said: Posted 

Dois-je spécifier l'encodage quelque part ou pour d'autres raisons?

+0

Salut, j'ai même question. Je ne pense pas que ce soit directement un problème d'encodage mais plutôt des caractères illégaux en XML comme dit dans org.jdom2.Verifier # checkCharacterData Je vais dépendant de vos besoins mais dans mon cas, je vais essayer de localiser automatiquement le caractère illégal et supprimez-le du texte jusqu'à ce que checkCharacterData (texte de chaîne) renvoie null. –

Répondre

0

En fait il vous suffit d'échapper à votre texte qui contient des caractères illégaux avec CDATA:

Element text = new Element("Text"); 
text.setContent(new CDATA(doc.getText())); 

L'opération inverse (lecture de texte échappé avec CDATA est transparent dans JDOM2, vous n'aurez pas à y échapper en arrière).

Pour mes tests, j'ajouté un caractère illégal à la fin de mon texte en créant un de 0x2 de valeur hexadécimale comme ça:

String text = doc.getText(); 
int hex = 0x2; 
text += (char) hex;