gpt4 book ai didi

java - 从 zipFile 的 byteArray 获取 XML 数据

转载 作者:行者123 更新时间:2023-12-02 00:39:29 27 4
gpt4 key购买 nike

我正在编写一个简单的程序,它从对象中检索 XML 数据,并根据用户条件动态解析它。由于其可用格式,我在从对象获取 XML 数据时遇到问题。

包含 XML 的对象将数据作为 zipFile 的 byteArray 返回,如下所示。

    MyObject data = getData();
byte[] byteArray = data.getPayload();

//上面返回一个zipFile的byteArray

我检查这一点的方法是将 byteArray 写入字符串

    String str = new String(byteArray); 

//上面返回一个字符串,里面有奇怪的字符。

然后我将数据写入文件。

    FileOutputStream fos = new FileOutputStream("new.txt");
fos.write(byteArray);

我将 new.txt 重命名为 new.zip。当我使用 WinRAR 打开它时,弹出了 XML。

我的问题是,我不知道如何使用流在 Java 中进行这种转换,而不先将数据写入 zip 文件,然后读取它。将数据写入磁盘会使软件变得太慢。您可以给我的任何想法/代码片段/信息将非常感激!谢谢另外,如果您需要我更好的解释,我很乐意详细说明。

作为另一种选择,我想知道 XMLReader 是否可以使用 ZipInputStream 作为输入源。

    ByteArrayInputStream bis = new ByteArrayInputStream(byteArray);
ZipInputStream zis = new ZipInputStream(bis);
InputSource inputSource = new InputSource(zis);

最佳答案

一个 zip 存档可以包含多个文件。在解析内容之前,您必须将 zip 流定位在第一个条目上:

ByteArrayInputStream bis = new ByteArrayInputStream(byteArray);
ZipInputStream zis = new ZipInputStream(bis);
ZipEntry entry = zis.getNextEntry();
InputSource inputSource = new InputSource(new BoundedInputStream(zis, entry.getCompressedSize()));

BoundedInputStream类取自 Apache Commons IO (http://commons.apache.org/io)

关于java - 从 zipFile 的 byteArray 获取 XML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6781120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com