java - 如何将 XML 文件直接写入 zip 存档?

标签 java xml jaxb zip

在不使用第 3 方库的情况下,使用 JAXB 将 XML 文件列表直接写入 zip 存档的正确方法是什么。

将所有 XML 文件写入一个目录然后压缩会更好吗?

最佳答案

正如其他人所指出的,您可以使用 ZipOutputStream 类来创建 ZIP 文件。将多个文件放入单个 ZIP 文件的技巧是在将 JAXB XML 数据写入(编码)ZipOutputStream 之前使用 ZipEntry 描述符。所以您的代码可能看起来与此类似:


JAXBElement jaxbElement1 = objectFactory.createRoot(rootType);
JAXBElement jaxbElement2 = objectFactory.createRoot(rootType);

ZipOutputStream zos = null; 
try {
  zos = new ZipOutputStream(new FileOutputStream("xml-file.zip"));
  // add zip-entry descriptor
  ZipEntry ze1 = new ZipEntry("xml-file-1.xml");
  zos.putNextEntry(ze1);
  // add zip-entry data
  marshaller.marshal(jaxbElement1, zos);
  ZipEntry ze2 = new ZipEntry("xml-file-2.xml");
  zos.putNextEntry(ze2);
  marshaller.marshal(jaxbElement2, zos);
  zos.flush();
} finally {
  if (zos != null) {
    zos.close();
  }
}

关于java - 如何将 XML 文件直接写入 zip 存档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129421/

相关文章:

java - 使用 Jersey 解析 XML 中的复杂对象

java - 带有元素引用的 JAXB 多个模式

java - 如何将java程序分发到多台机器上?

java - 为每个实体使用单独的实体管理工厂是否会导致问题?

java - 使单选按钮在 GridLayout 中彼此相邻显示

java - JAXB 解码 <string>foobar</string>

java - UTF-8 JAXB 编码后 XML 内容仍为 ISO 8859-1

java - .POST_MODULE : Failed to process phase POST_MODULE of deployment

java - 具有属性的 XML 元素在 JAXB 中具有 ":"

php - 如何访问 SimpleXML 对象中的这个数字元素?