在 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 中解析字节数组的主要内容,如果未能解决你的问题,请参考以下文章