在 Java 中解析字节数组

Posted

技术标签:

【中文标题】在 Java 中解析字节数组【英文标题】:Parse Byte Array in Java 【发布时间】:2019-01-05 22:03:45 【问题描述】:

目前,我正在使用来自服务器的输入流将 XML 数据插入到字节数组中。我的要求是它需要删除字节数组中的一些 XML 节点。最好的方法是什么?以下是我的选择:

    将字节数组转换为 XML 文件并使用 DOM 或 SAX 进行解析。

    将数据插入 XML 文件而不是字节数组,并使用 DOM 和 SAX 解析器进行解析。

我怀疑是否有任何方法可以删除字节数组中的 XML 节点,例如 DOM 和 SAX 解析器。请指导我 - 谢谢。

【问题讨论】:

我不认为你可以用 DOM 或 sax 做到这一点,因为它们都给你提供了节点和字符串方面的抽象...... vtd-xml 是唯一让你可以选择的 api在 java 中在字节级别上操作 xml,......在 C 或 C++ 中,你还有 pugi-xml 和 rapid-xml.. 我认为...... 【参考方案1】:

使用 jdom2 库。使用 jdom2 执行任何编辑功能是最简单的


https://mvnrepository.com/artifact/org.jdom/jdom2/2.0.6

【讨论】:

它可以解析为任何文件中的xml数据。但我的要求是我的xml数据存储在内存中的字节数组中。【参考方案2】:

将您的数组包装到 ByteArrayInputStream 并将流传递给 XMLInputFactory.createXMLEventReader 以创建 SAX 解析器(或任何其他使用 InputStream 的方法)。

UPD:或者更好地传递原始输入流(“来自服务器的输入流”)并将您的 XML 过滤器输出收集到字节数组。

【讨论】:

是的!传递原始 InputStream。不要无缘无故地把整件事读入内存。

以上是关于在 Java 中解析字节数组的主要内容,如果未能解决你的问题,请参考以下文章

将 C 字节数组解析为 Java ByteBuffer。

解析的字节数组在解析成结构后变成垃圾

使用数组和队列的方式解析字节

java字节数组如何判断实际元素个数。

在java中如何把字节数组存储到数据库?

java和c#的字节数组转换问题