如何在解析文檔時強制SAX解析器(特別是Java中的Xerces)使用DTD,而在輸入文檔中沒有任何文檔類型?這甚至有可能嗎?如果沒有在輸入文件中指定一個,我如何強制SAX解析器使用DTD?
這裏是我的方案的一些細節:
我們有一堆符合由多個不同的系統(其中沒有我可以改變)產生相同的DTD XML文檔。其中一些系統將doctype添加到他們的輸出文檔中,而其他系統則不會。有些使用命名字符實體,有些則不。 一些使用命名字符實體而不聲明文檔類型。我知道這不是猶太教,但這是我必須與之合作。
我正在研究需要使用Java解析這些文件的系統。目前,它通過首先在XML文檔中讀取一個流來處理上述情況,嘗試檢測是否定義了文檔類型,並添加一個doctype聲明(如果尚不存在)。問題是這個代碼有問題,我想用更乾淨的東西替換它。
文件很大,所以我不能使用基於DOM的解決方案。我也在嘗試解析字符實體,所以它不幫助使用XML Schema。
如果你有一個解決方案,你可以直接發佈它,而不是鏈接到它?它不會堆棧溢出很好,如果將來有一個正確的解決方案與死鏈接。