0
我做Java中的XML驗證,使用SAX「在文本內容中發現無效字符」,我想認識以下類型的錯誤: 「一個無效的字符在文本內容中發現」。如何檢測
目前,我有一個驗證用SAX和一些文件我已經敗壞沒有檢測到錯誤的字符。當我嘗試用IE瀏覽器打開結果XML文件時,例如,我收到一條錯誤消息「在文本內容中發現無效字符」。
這是XML數據的例子:
<?xml version='1.0' encoding='UTF-8' standalone='yes'>
<!DOCTYPE blabla SYSTEM 'blabla.dtd'>
<blabla type='type' num='num'>
<...>... corrupted character </...>
</blabla>
這是解析器的instanciation的例子:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
parser = factory.newSAXParser();
parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
parser.setProperty(JAXP_SCHEMA_SOURCE, new File(theConfig.getRoot()
.concat(File.separator).concat(theConfig.getXsdFileName())
.concat("-v").concat(theConfig.getXsdFileVersion()).concat(
XSD_EXTENSION)));
reader = parser.getXMLReader();
reader.setErrorHandler(getHandler());
reader.setEntityResolver(new MyEntityResolver(theConfig.getRoot(),
theConfig));
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(theDataToParse));
reader.parse(is);
錯誤處理程序實現方法「警告」,「錯誤」和'fatalError',但沒有檢測到。 實體解析器能夠引導存儲在配置目錄中的custome實體文件。
是否有人有,爲什麼沒有檢測到這種畸形的字符錯誤的想法?是因爲我的流來自String而不是文件?
在此先感謝您的幫助。
問候。
好吧,其實就像你說的,我的第一個字節轉換爲字符,因爲數據來自於EBCDIC格式大型機的基礎設施,以及我第一次轉換之前申請修改鏈接到我的XML結構(格式化)。我會檢查我是否可以用另一種方式做到這一點,以便我有字節而不是字符。謝謝你的回答 – kij 2011-02-15 14:42:48