2013-07-13 54 views
0

我有一个包含.xml和.xsd文件的.zip文件。从Java压缩解析xml到xsd

我正在用类似this one的代码来阅读它。现在,当我尝试解析.xml时,我得到一个错误,表明找不到模式。如何预先加载.xsd,然后使用它来解析.xml?

回答

0
  1. 从zip文件获取ZipInputStream - Reading text files in a zip archive

  2. 使用javax.xml.transform.stream.StreamSource中 - http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/transform/stream/StreamSource.html

    SchemaFactory的SF = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = sf.newSchema(new StreamSource(xsdZipInputStream)); Validator validator = schema.newValidator(); validator.validate(xml);

+0

有一点要注意使用带有一个InputStream构造StreamSource当是,除非你调用setSystemId(),基本URI将是未知的,这意味着外部实体的引用将无法解析。将基础URI设置为ZIP文件中的资源需要使用非标准的zip文件URI格式,并非所有软件都支持。 –