2010-04-14 5 views
2

Le fichier XML im essayant d'analyser contient un caractère de contrôle 0x2 dans CDATA. J'ai essayé de le remplacer par référence de caractère qui a conduit à CDATA ressembler à:Analyse XML contenant la référence de caractère

CDATA section----charcter reference----CDATA section 

Maintenant, si je tente de l'analyser, je reçois un message d'erreur indiquant: org.xml.sax.SAXParseException: Le contenu est pas admis prologue.

Le XML d'origine ressemblait à:

<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD&#2;EFGH]]></CELL> 

je l'ai modifié à:

<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD]]>&#2;<![CDATA[EFGH]]></CELL> 
+0

Publiez le code XML réel dont vous avez besoin en éditant votre question. Lorsque vous faites cela, sélectionnez le XML et appuyez sur le bouton 1010 au-dessus de la zone de saisie de texte. –

Répondre

0

Les définitions des entités ne sont pas résolus dans les sections CDATA, c'est pourquoi votre exemple original ne fonctionne pas. Que l'exemple modifié ne fonctionne pas semble être une erreur de syntaxe SAX à mon avis. Peut-être que l'analyseur syntaxique SAX n'autorise pas une marque d'ordre d'octet invisible (BOM) avant le prologue XML qui commence par <?, Mais l'analyseur syntaxique SAX le devrait.

Pour aider l'analyseur syntaxique SAX, la solution de contournement suivante le ferait éventuellement. A savoir, consommer la nomenclature avant de nourrir l'analyseur. Vous pouvez utiliser un flux markable à cette fin, c'est-à-dire marquer le flux, lire la nomenclature, réinitialiser le flux à sa marque s'il n'y avait pas de nomenclature. Je n'ai pas essayé, c'est juste une supposition.

BTW: Votre question serait mieux perçue si vous corrigiez la faute de frappe dans l'intro: Ecrire "référence de caractère" au lieu de "référence de charcter". J'ai d'abord pensé que le manquant est lié à votre question.

+0

Voir aussi: http://lachy.id.au/log/2006/09/xml-prolog –