2013-07-13 73 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格式,並非所有軟件都支持。 –