在 java 中解析非常大的 XML 文档(以及更多)

2024-06-28

(以下全部用Java编写)

我必须构建一个应用程序,该应用程序将可能非常大的 XML 文档作为输入。该文档已加密(不是使用 XMLsec,而是使用我客户预先存在的加密算法),将分三个阶段进行处理:

首先,将根据上述算法对流进行解密。

其次,扩展类(由第三方编写的我提供的 API)将读取文件的某些部分。读取的数量是不可预测的——特别是不能保证它位于文件的标头中,但可能出现在 XML 中的任何位置。

最后,另一个扩展类(相同的处理)会将输入 XML 细分为 1..n 个子集文档。这些可能在某种程度上与第二个操作处理的文档部分重叠,即:我相信我将需要倒回我用来处理该对象的任何机制。

这是我的问题:

有没有一种方法可以做到这一点,而无需一次将整个数据读入内存?显然,我可以将解密实现为输入流过滤器,但我不确定是否可以按照我描述的方式解析 XML;通过遍历尽可能多的文档来收集第二步的信息,然后倒回文档并再次通过它以将其拆分为多个作业,理想情况下释放文档中不再使用的所有部分他们已经通过了。


斯塔克斯是正确的方法。我建议看看Woodstox http://woodstox.codehaus.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 java 中解析非常大的 XML 文档(以及更多) 的相关文章

  • 记录所有 presto 查询

    如何将提交到 presto 集群的所有查询存储在文件 ORC 文件 或其他数据库中 目的是保存在 presto 工作线程上执行的所有查询的记录 我知道我需要覆盖 queryCompleted 方法 我也尝试遵循this https grou
  • Thymeleaf 循环直到一个数字

    我使用 Thymeleaf 进行搜索并从服务器获取响应 这保存了结果的数量 response count 我想进行这样的迭代 for int i 1 i lt response count i if response page i
  • Java - 加载 .OBJ 文件

    我希望能够从 obj 文件获取信息 例如子组件的名称 那里有装载机可以做到这一点吗 Java3D 有一个 ObjectFile 但是我见过的方法列表让我觉得它不完全是我想要的 我自己解析文件会更好吗 谢谢 将要 几个月前我写了一个 java
  • Rabbitmq 服务器启动失败,文件被锁定

    Rabbitmq 3 6 5 启动失败 如何修复它 BOOT FAILED Error description Found lock file at s n Either previous upgrade is in progress or
  • Kafka模板和Kafka生产者有什么区别?

    正如我所见 Kafka 模板内部使用了 Kafka 生产者 我只是想知道确切的区别是什么 此外 与 Kafka 生产者相比 我发现 Kafka 模板中提供了许多可用的 send 方法 请帮我解决一下 如果有人知道更多的话 生产者是一种模式
  • 使用 writeBytes 的 Java 客户端套接字

    我正在从缓冲区读取字符串并将其写入服务器 我遇到的问题是 当我打开套接字并循环写入时 服务器永远不会收到该字符串 当我使用这个时 try Socket send new Socket localhost 1490 DataOutputStr
  • 在连续 8 个测量到的 GC 抖动周期后关闭 JVM

    我正在编写 Apache beam BAtch 数据流 其中从 GCS 写入到 BQ 我的数据包含400万条记录 我已指定n1 HighMem 8机器类型 我的数据流以少量数据形式工作 我的用例我的模式不固定 所以我使用了 getFaile
  • 使用 Linq 对 XML 进行复杂排序

    我尝试为我的问题找到解决方案 但我在该领域 Linq XML 的知识相当有限 已经找到一个模拟施工 https stackoverflow com questions 6922180 sort xmldocument using linq
  • Excel 读取错误:标头签名无效。如何解决?

    我正在从浏览器上传一个 Excel 文件 我正在使用 POI jar 但出现错误 标头签名无效 读取 3255307777713450285 预期为 2226271756974174256 下面是我使用过的两个jsp文件 JSP 1
  • 无法在 IntelliJ IDEA 中导入 javax.validation.constraints

    I can t import that simple library i have all jar files also i tried Ivalidate Caches Restart Maybe i have to add valida
  • 如何使用 Jsoup 仅删除文本中的 html 标签?

    我想使用 JSOUP 从文本中仅删除 html 标签 我使用了这里的解决方案 我之前关于 JSOUP 的问题 https stackoverflow com questions 33466557 jsoup remove only html
  • 获取Java InputStream后面的文件的字节数

    正如标题所示 我需要知道文件在输入流 后面 有多少字节 我不想下载所有字节和计数 需要很长时间 我只需要知道文件有多少字节 像这样 int numberOfBytes countBytes inputStream 所以 我需要 countB
  • 如何使用鼠标指针和键盘快捷键捕获文本?

    我想使用 C 或 java 使用鼠标指针和键盘快捷键从打开的窗口捕获文本 喜欢babylon http babylon com 所以 我需要知道什么以及如何实施 我需要使用哪些库 或者我可以使用 winapi 吗 使用脚本语言创建您想要执行
  • 媒体对象上的 javafx UNKNOWN 持续时间

    我是 Java 和 JavaFX 的新手 过去几年我一直在使用 QT 在 Python 上进行开发 现在我正在使用 Java 和 JavaFX 进行开发 我正在开发一个程序 可以为用户设定的时间播放音乐文件 然后停止 因此 我需要从媒体对象
  • 将日期从“2009-12 Dec”格式转换为“31-DEC-2009”

    2009 12 Dec should be converted to 31 DEC 2009 2010 09 Sep should be converted to 30 SEP 2010 2010 02 Feb should be conv
  • 使用 jsoup 收集倒计时器并为 android 设置计时器

    我想解析 eBay 上的倒计时器 span class 5g 20h span 如何用 jsoup 解析它以在 android studio 上创建倒计时器 我可以像平常一样解析它吗element 像下面这样 更新 getMsFromStr
  • 在 Maven 存储库中查找 Oracle JDBC 驱动程序

    我想将 oracle jdbc 驱动程序作为依赖项 运行时范围 添加到我的项目中 ojdbc14 在 MVNrepository 站点中 放入 POM 的依赖项是
  • 按下 JButton 时运行函数

    我正在尝试用java编写一个程序 使用机器人每隔几秒按一次特定的键 它有一个带有开始和停止按钮的 GUI 以及一个告诉其处于哪个状态的标签 到目前为止 我已经完成了所有工作 除了当我单击 开始 时 它运行我的机器人功能的循环 这是无限的 没
  • Spring Boot数据休息中的日期问题

    当我处理日期时 我遇到了春季数据休息的问题 简而言之 就是推迟一天的日期 例如 如果我有 1111 11 11 它会返回给我 1111 11 10 SO 中有一些相关的帖子 ex1 https stackoverflow com quest
  • Python 内存使用情况

    因此 我有一些代码接收一组文件 将其可以缝合在一起 然后绘制它们 我发布了大部分代码 试图使其更具可读性 如果需要 可以添加更多代码 for paths dirs files in os walk start path for d in d

随机推荐

  • 更新选择列表中的现有选项

    假设我有一个包含 3 个选项的选择列表
  • @JsonSerialize 和 JsonSerializer 的用法

    Problem 我有一个 Spring MVC 应用程序 需要我将某个实体列表的 id 和名称转换为具有特定格式的 JSON 对象数组 并根据某个请求输出该数组 也就是说 我需要一个如下所示的 JSON 对象数组 label Subject
  • PHP在页面上重复图像[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我制作了一个 php 程序来在方框中重复页面上的图像 该图像连续重复 100 次 然后垂直重复 100 次 这意味着该方框中总共重复了 100x
  • 如何使用 for 循环分配按钮

    你能帮助我吗 我仍在尝试了解如何分配listType到一个按钮 有8个按钮 其中每一个都将被分配给一个特定的按钮 我不知道如何做到这一点 https jsfiddle net 82gv4nhm https jsfiddle net 82gv
  • “发射后不管” python async/await

    有时需要发生一些非关键的异步操作 但我不想等待它完成 在 Tornado 的协程实现中 您可以通过简单地省略来 触发并忘记 异步函数yield关键词 我一直在试图弄清楚如何用新的方式 发射后忘记 async awaitPython 3 5
  • 未实现接口成员“IComparable.CompareTo(Object)”

    我有一个 android 的 aar 文件 我正在尝试在我的 xamarin android 应用程序中使用它 我按照链接中给出的步骤进行操作https developer xamarin com guides android advanc
  • 将不正确的变量类型传递给函数不会发出类型错误

    你能解释一下为什么当我将不正确的变量类型传递给函数 ts 时不会发出类型错误吗 export class CreateCategoryDto implements Omit
  • R 中二维核密度估计的混乱

    核密度估计器用于估计特定的概率密度函数 参见mvstat net http www mvstat net tduong research seminars seminar 2001 05 and scikit learn 文档 http s
  • Python postgreSQL sqlalchemy 查询 DATERANGE 列

    我有一个预订系统 并将预订日期范围保存在 日期范围 列中 booked date Column DATERANGE nullable False 我已经知道我可以通过以下方式访问实际日期booked date lower or booked
  • 允许结构字段溢出到下一个字段

    考虑以下简单示例 struct attribute packed int code 1 int place holder 100 s void test int n int i for i 0 i lt n i s code i 1 for
  • 无法访问通过 jQuery ajax 发送的我的 Post 值

    EDIT 用 htaccess 删除 index php 会创建我刚刚发现的这个问题 现在我要着手解决它 EDIT 问题解决了 JavaScript 是错误的 url login 它需要一个尾部斜杠 ORIGINAL 在我的主页视图中 我创
  • Qt:如何制作二维插值颜色字段?

    我是 C 的初学者 尤其是与图形相关的 我想为我的图形视图制作一个动画背景 如下所示 梯度场气流 http www engineering leeds ac uk cfd research images untitled JPG 该图片表现
  • 在 Ruby 中生成正则表达式模式的字符串

    在Python语言中我发现rstr https bitbucket org leapfrogdevelopment rstr 可以生成一个字符串regex http en wikipedia org wiki Regular express
  • 如何解决转移/减少冲突?

    我正在使用 CUP 创建论文所需的解析器 我的语法中存在移位 归约冲突 我有这个生产规则 command IDENTIFIER IDENTIFIER LPAREN parlist RPAREN 我有这个警告 Warning Shift Re
  • 具有最大高度的 div 内的表格

    我想要一个可滚动的表格 为了实现这一点 我包装了一个 table into a div with a max height and overflow auto 除此之外 div has display inline block以确保 div
  • 在接收器上获取 Chromecast 发送器 URL

    Chromecast 接收者是否可以确定特定发送者的 URL 我可以获得发件人列表 const context cast framework CastReceiverContext getInstance context getSender
  • C++ win32 从资源加载字符串

    好吧 我最近决定将应用程序中的每个字符串放入 STRINGTABLE 中 这样我就可以轻松翻译成不同的语言 我知道如何使用 LoadString api 但这涉及我为要加载的每个字符串使用不同的变量 如果我的应用程序有 100 个字符串 那
  • 如何在颤动中设置容器的不透明度

    我想为包含十六进制颜色代码的容器设置不透明度 如何做呢 这是我当前的代码 final body Container width MediaQuery of context size width margin const EdgeInsets
  • 通过标记现有提交来触发 Jenkins 管道

    描述 我设置了 Jenkins 2 126 以便在推送新标签时构建管道 具体来说 我想将现有提交标记为master as release 3并让它触发构建 根据多个消息来源 我想要的是可能的 https mohamicorp atlassi
  • 在 java 中解析非常大的 XML 文档(以及更多)

    以下全部用Java编写 我必须构建一个应用程序 该应用程序将可能非常大的 XML 文档作为输入 该文档已加密 不是使用 XMLsec 而是使用我客户预先存在的加密算法 将分三个阶段进行处理 首先 将根据上述算法对流进行解密 其次 扩展类 由