Je reçois l'exception suivante lors de l'analyse du fichier XML. J'ai des données XML au format chaîne de caractères et je l'analyse en utilisant l'analyseur DOM. Je suis l'analyse des données qui est une réponse du serveur Java à un client Blackberry. J'ai également essayé d'analyser avec l'analyseur SAX, mais le problème n'est pas résolu. S'il vous plaît aider.Caractère non valide '& # x0' rencontré
Répondre
Je suis la solution,
je juste garnis de trim() et cela a fonctionné parfaitement bien avec moi.
Oui, peut-être que c'est parce que le caractère "null" était à la fin de votre chaîne. Mais je pense que la vraie solucion devrait utiliser Replace du caractère "\ 0", et le changer pour une chaîne vide. –
On dirait que vous essayez d'analyser une chaîne vide en XML. Avez-vous vérifié que le client reçoit une bonne réponse?
Oui, je l'ai imprimé la Reponse provenant du serveur. Ce n'est pas nul. Chaque fois que je "code" la réponse de chaîne, l'analyseur fonctionne très bien. Mais je ne peux pas coder la réponse dans mon vrai projet. S'il vous plaît aider. – iOSDev
Essayons de tout clarifier - si vous codez la réponse, votre client va bien, mais quand vous utilisez la réponse du serveur, vous obtenez cette erreur? Est-ce ce que vous dites? – Andrew
Oui, vous avez raison. Hardcoding fonctionne bien ... – iOSDev
InputStream xml = new ByteArrayInputStream(xmlData.getBytes());
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
xml.close();
Ci-dessus est le code que j'utilise pour l'analyse.
Merci pour l'édition bien formée du code – iOSDev
Votre code appelle actuellement getBytes()
en utilisant l'encodage par défaut de la plateforme - c'est très rarement une bonne idée. Découvrez ce qu'est vraiment l'encodage des données et utilisez-les. (Il est susceptible d'être UTF-8.)
Si le Blackberry comprend DocumentBuilder.parse(InputSource)
, ce serait préférable: Si cela ne fonctionne pas
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
StringReader reader = new StringReader(xmlData);
try {
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
} finally {
reader.close();
}
, ont un très regarder de près votre chaîne, par exemple comme ceci:
for (int i=0; i < xmlData.length(); i++) {
// Use whatever logging you have on the Blackberry
System.out.println((int) xmlData.charAt(i));
}
Il est possible que le problème est en train de lire la réponse du serveur - si vous lisez mal, vous pourriez avoir Unicode nulls (\ u0000) dans votre chaîne, qui peut ne pas apparaître évidemment sortie log/debug, mais provoquerait l'erreur que vous avez montré.
EDIT: Je viens de voir que vous obtenez les données base64 en premier lieu - alors pourquoi le convertir en une chaîne, puis revenir en octets? Il suffit de décoder le base64 en un tableau d'octets, puis l'utiliser comme base de votre ByteArrayInputStream
. Ensuite, vous n'avez jamais à faire face à un encodage de texte en premier lieu.
Aussi, comment puis-je vérifier que j'ai \ u0000 dans la chaîne? Je suis nouveau à la manipulation de XML, Y at-il un moyen de chk.? S'il vous plaît aider. – iOSDev
Regardez le deuxième extrait de code - il montre comment examiner la chaîne manuellement. Vous pouvez utiliser xmlData.indexOf ("\ u0000") pour vérifier par programme. –
Quelle solution? Et avez-vous examiné la chaîne? Cela aiderait si vous donniez beaucoup plus de détails dans la question. –
Vous avez un caractère nul dans votre flux de caractères, c'est-à-dire un caractère (0) qui n'est pas valide dans un document XML. Si ce n'est pas le cas dans la chaîne d'origine, il s'agit probablement d'un problème de décodage de caractères.
- 1. hexadécimale 0x19 est un caractère non valide
- 2. Comment supprimer les caractères XML non valides d'un flux dans J2ME? org.xml.sax.SAXParseException: caractère non valide
- 3. java.io.IOException: argument non valide
- 4. ressources non valide Fichier
- 5. PHP: "valeur numérique non bien formé a rencontré"
- 6. Importation D7 République populaire démocratique de Delphi 2009: « Caractère non valide dans le contenu du texte »
- 7. SharePoint UserProfile ChoiceList - virgule est un caractère non valide pour le contrôle du sélecteur?
- 8. Caractère binaire Amazon SQS non valide dans le corps du message
- 9. Crash de variante non valide
- 10. Non valide Nom du paramètre
- 11. Enregistrement d'une connexion non valide
- 12. Oracle SQL Identifiant non valide
- 13. CompositeScript - Erreur Viewstate non valide
- 14. Jarfile non valide ou corrigé
- 15. Redirection de page non valide
- 16. Caractère non ASCII en PHP?
- 17. fopen non-ascii caractère erreur
- 18. Est-ce que est un caractère valide en XML?
- 19. Google Data Source JSON non valide?
- 20. ContentPropertyAttribute non valide sur la propriété 'Text'
- 21. Struts2 Annotation-validateurs non valide Chars
- 22. Moulage non valide lors de l'entrée
- 23. php + unixODBC + DB2 + DESCRIBE = jeton non valide?
- 24. wget - http: //: nom d'hôte non valide
- 25. chaîne est valide double ou non
- 26. Oracle: TNS-12532: TNS: argument non valide
- 27. XSL - Extension non valide Xpath sur Remplacer
- 28. {ApplicationName} /ScriptResource.axd et viewstate non valide
- 29. SQL Server 2005 Cast Assemblée non valide
- 30. Suppression d'éléments facultatifs de XML non valide
nous montrent le xml –