2009-06-25 10 views
0

J'essaie d'utiliser DOM Parser en Java pour analyser un petit fichier XML que je retire du réseau de son uri mais qui reçoit une erreur se plaignant de l'absence de point-virgule.org.xml.sax.SAXParseException: La référence de caractère doit se terminer par ';' délimiteur. Solution de contournement requise

est ici lien 108:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("url_to_the_xml_file.xml"); 

est ici l'erreur:

[Fatal Error] A01.xml:6:53: The character reference must end with the ';' delimiter. 
Exception in thread "main" org.xml.sax.SAXParseException: The character reference must end with the ';' delimiter. 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 
    at Parser.Parse(Parser.java:108) 
    at Parser.main(Parser.java:185) 

analyse cette ligne de XML

<title>Reduction Algorithm using the &#192 TROUS Wavelet Transform.</title> 

De toute évidence, il y a un manque point-virgule. Est-ce que quelqu'un sait tout autour de ce problème?

Répondre

1

Je voudrais extraire le XML séparément dans un tableau/chaîne d'octets et effectuer un remplacement de regex sur l'entité malformée avant de l'envoyer à l'analyseur.

Je ne suis pas un expert mais regex la recherche d'un & # \ d {1,4} [^,] pourrait faire une moitié de l'affaire.

Si vous avez seulement cette entité malformé vous pourriez juste String.replaceAll("&#192", "&#192;");

+0

avec son java [0-9] au lieu de \ d – Duncan

0

Si vous avez plus de problèmes avec la syntaxe XML que, une solution plus complète consiste à utiliser HTMLTidy ou son port Java, JTidy, pour nettoyer la balisage avant de le transmettre à un analyseur. Il a été conçu à l'origine pour HTML/XHTML, mais je suis à peu près sûr qu'il est capable de ranger du code XML arbitraire si on lui donne les bons paramètres.

1

utilisation

"?default=sample&amp;page=homePage" 
Questions connexes