gpt4 book ai didi

java - 解析InputStream "on the fly"/重用InputStream

转载 作者:行者123 更新时间:2023-11-30 08:07:20 25 4
gpt4 key购买 nike

我有一个包含 XML 数据的输入流,我想在返回输入流之前对其进行解析。

InputStream is = myObj.getInputStream();// parse Inputstream herereturn is;

当然,我可以将流保存为字节数组并从中返回一个新的 InputStream 或

在“myObj”上创建第二个InputStream。

但是有什么方法可以“即时”解析流吗?

编辑:

基本上我正在寻找一种在解析后重新使用流的方法。某种程度的解析流而不消耗它,分别在解析后重置它。

解决方案:

我找到的解决方案是使用 BufferedInputStream (注释中的注释:最多只能工作 8k 字节)

BufferedInputStream is = new BufferedInputStream ( myObj.getInputStream() );is.mark( Integer.MIN_VALUE );// parse Inputstream hereis.reset();return is;

最佳答案

要动态解析,无需等待流结束,您可以使用 Sax Parser .

sax 解析器是基于事件的,因此在处理之前没有必要读取整个文档。这个过程是这样的:

  • 该标签人已开放
  • 标签名称已开放
  • 标签名称已关闭
  • 标签姓氏已打开
  • 标签姓氏已关闭
  • 标签人已关闭

对于每个事件,您需要执行一些自定义代码。

使用 sax 解析器比 dom 解析器稍微困难一些,但有一些优点。总而言之,它需要的资源较少,而且您无需等待即可获得整个文档。

关于java - 解析InputStream "on the fly"/重用InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912641/

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