2011-04-28 149 views
2

我有一個SAX XML解析器的問題。 我想分析一個顯然無效的XML文件(我得到一個ExpatParser $ ParseException:在第5行,列169:不正確(無效標記))。我知道什麼是錯誤的,但XML文件不是由我創建的......所以我不能改變它。手柄SAX parserexception

現在我想在我的DefaultHandler中處理該錯誤。但無論誤差(),也不fatalError()也警告()被調用......

我可以採用某種中斷解析過程,告訴解析器做什麼用的那塊無效的XML並繼續解析???

感謝, JPM

+0

如果我是你,我會提供某種清理代碼,將XML傳遞到SAX解析器之前......或者告訴源代碼儘可能地修復它們的XML,因爲它會把它們全部用三秒鐘對於小的語法錯誤。 – 2011-04-28 22:11:18

+0

完全相同的問題,我有.... http://stackoverflow.com/questions/5673423/saxparser-fails-when-responce-contains-hindi-or-other-special-characters – 2011-04-29 03:48:48

+0

這有點像生活給你檸檬; SAX解析器不能用檸檬製作蘋果汁。對於這個記錄來說,這是對那個給你檸檬的傢伙的適當迴應:「我不想要你那該死的檸檬!這到底是什麼?!要求看到生活的經理!給洞穴約翰遜檸檬!你知道我是誰嗎?我是一個將你的房子燒掉的人!與檸檬!我會讓我的工程師發明一個可燃的檸檬,燒掉你的房子! (Portal 2) – 2011-04-29 08:05:30

回答

1

我猜想,這是的SAXParseException一個fatal error的SAX解析器不能恢復。在這種情況下,你可能需要在試圖解析它之前修復壞標籤(正如Robert在他的評論中所建議的那樣)。

您可能想要考慮使用Java Regex來修復XML中已知的不良情況,例如,
Regex for quoting unquoted XML attributes

爲了記錄在案,我不使用崇尚regex to actually parse XML

+0

感謝丹和羅伯特, 我想我會這樣做。由於xml非常簡單,我可能可以手動解析它...我必須先處理其他事情。但我認爲其中的一種方法可以解決我的問題(並且我仍然希望我們能夠得到資源投入2秒來修復xml :-)) 謝謝, JPM – jpm 2011-04-29 14:12:27