2009-05-28 12 views
10

Ho XML che ho bisogno di analizzare ma non ho il controllo sulla creazione di. Purtroppo non è molto severa XML e contiene cose come:Come analizzare l'XML mal formato in Java?

<mytag>This won't parse & contains an ampersand.</mytag> 

Le classi javax.xml.stream non piace questo a tutti, e giustamente errore:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[149,50] 
Message: The entity name must immediately follow the '&' in the entity reference. 

Come posso ovviare a Questo? Non riesco a modificare l'XML, quindi suppongo di aver bisogno di un parser tollerante agli errori.

La mia preferenza sarebbe per una correzione che non richiede troppe interruzioni del codice parser esistente.

risposta

6

Se non è XML valido (come il precedente) allora nessun parser XML in grado di gestire (come avete identificato). Se si conosce l'ambito degli errori (come il problema dell'entità precedente), la soluzione più semplice potrebbe essere quella di eseguire un processo di correzione su di esso (risolvendo entità come l'inserimento di entità) e quindi inviarlo a un parser esistente.

Altrimenti dovrai codificarne uno con supporto integrato per tali anomalie. E non posso credere che sia qualcosa di diverso da un compito noioso e soggetto a errori.

+0

+1 Per la codifica. La maggior parte delle volte è probabilmente una cattiva idea, ma in casi molto semplici vale la pena considerare. – xdhmoore

1

Credo che JSoup sia in grado di gestire l'XML mal formato

Problemi correlati