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