Я делаю проверку XML в Java, используя SAX, и я хотел бы распознать следующий тип ошибки: «В текстовом содержимом обнаружен недопустимый символ».
В данный момент,У меня есть проверка с SAX, и для некоторых документов у меня есть поврежденные символы, не обнаруженные как ошибки.Когда я пытаюсь открыть полученный XML-файл с помощью браузера IE, например, я получаю сообщение об ошибке «В текстовом содержимом обнаружен недопустимый символ».
Это пример данных XML:
<?xml version='1.0' encoding='UTF-8' standalone='yes'>
<!DOCTYPE blabla SYSTEM 'blabla.dtd'>
<blabla type='type' num='num'>
<...>... corrupted character </...>
</blabla>
И это пример экземпляра синтаксического анализатора:
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);
В обработчике ошибок реализованы методы 'warning', 'error' и 'fatalError', но ничего не обнаружено.Средство распознавания сущностей позволяет вести файл сущности обычного пользователя, хранящийся в каталоге конфигурации.
Есть ли у кого-то идея, почему такая ошибка с искаженным знаком не обнаруживается?Это потому, что мой поток исходит из строки, а не из файла?
Заранее благодарен за помощь.
С уважением.