【问题标题】:How to read from an XML within a Zip file in Java如何从 Java 中的 Zip 文件中读取 XML
【发布时间】:2012-09-27 18:51:20
【问题描述】:

我希望从存储在 zip 文件中的 XML 文件中读取数据。我在理解如何做到这一点时遇到了很多问题。我似乎能做的最好的事情就是让输入流正常工作,但我不明白如何阅读它! 所以我知道它是正确的文件,不,我想将数据传递给我拥有的 XML 解析器。但是我真的不明白输入流是什么,或者如何正确操作它。 我以前见过它与缓冲区一起使用,然后读入缓冲区,我的问题是如果缓冲区足够大,我们如何正确选择缓冲区的大小?

任何帮助都会很棒,谢谢!

ZipFile zf;
    try {
        zf = new ZipFile(directory);
        CharBuffer charBuffer = CharBuffer.allocate(BUFFER_SIZE);
      for (Enumeration<? extends ZipEntry> e = zf.entries();
            e.hasMoreElements();) {
        ZipEntry ze = e.nextElement();
        String name = ze.getName();
        if (name.endsWith(".xml")) {
          InputStream in = zf.getInputStream(ze);
          // read from 'in
        }
      }
    } catch (IOException e1) {
        System.out.println("Sorry we couldn't find the file");
        e1.printStackTrace();
    }

【问题讨论】:

    标签: java xml-parsing zip inputstream zipfile


    【解决方案1】:

    一个简单的 google 搜索可以引导您找到大量解释解析 XML 所涉及的代码工作的文章。那为什么不直接搜索呢?

    其中一个:http://www.java-samples.com/showtutorial.php?tutorialid=152

    我不包括如何解压缩文件,因为你已经提到你已经完成了,但如果你正在寻找选项,我会编辑我的答案。

    快乐的 Java 编码。 :)

    【讨论】:

    • XML 解析是最简单的部分,如何让我的 inputStream 转换为 XML?我真的不知道只从输入流中做什么。
    • 你需要先了解一下输入流,输入流是什么格式的?然后研究格式,了解哪些位意味着什么以及该特定类型数据流的基本数据解析方法。 @jQwierdy
    【解决方案2】:

    您可以使用SAXStAX 来解析/读取流 - 参考JAXP

    使用 Stream API,

     XMLStreamReader reader=XMLInputFactory.newFactory().createXMLStreamReader(in);
     while(reader.hasNext())
     {
      System.out.println(reader.next());
      System.out.println(reader.getLocalName());
     }
    

    使用 SAX,

    SAXParserFactory.newInstance().newSAXParser().parse(in, new YourHandler());
    

    【讨论】:

      【解决方案3】:

      你的意思是这样吗?

      DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
      Document document = docBuilder.parse(in);
      

      或者你的意思是你已经有一个不接受 InputStream 的特定 XML 解析器 - 它需要什么?

      【讨论】:

      • Document 来自哪个库?我遇到了一些问题。
      • 我认为org.w3c.dom.Document
      猜你喜欢
      • 2021-12-15
      • 2018-02-23
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2021-07-05
      • 1970-01-01
      相关资源
      最近更新 更多