我正在使用 SAX 在 Java 中进行 XML 验证,并且我想识别以下类型的错误:“在文本内容中发现了无效字符”。
目前,我使用 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>
这是解析器实例化的一个示例:
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);
错误处理程序实现方法“警告”、“错误”和“致命错误”,但没有检测到任何内容。实体解析器能够引导存储在配置目录中的客户实体文件。
有人知道为什么没有检测到这种格式错误的字符错误吗?是因为我的流来自字符串而不是文件吗?
在此先感谢您的帮助。
问候。