一尘不染

快速,轻量级的XML解析器

json

我有一个将要推送的特定格式的XML文档。该文档将始终是同一类型,因此非常严格。

我需要对此进行解析,以便将其转换为JSON(嗯,这是一个混蛋版本,以便其他人可以将其与DOJO一起使用)。

我的问题是,我应该使用非常快速的轻量级(不需要SAX等)XML解析器(有什么想法吗?)还是编写我自己的,基本上可以转换为StringBuffer并在数组中旋转?基本上,我假设所有HTML解析器都将旋转通过字符串(或内存缓冲区)并进行解析,并在整个过程中产生输出。

谢谢

编辑

xml将介于3/4行到大约50个最大值之间(极端)。


阅读 262

收藏
2020-07-27

共1个答案

一尘不染

不,您不应该尝试为此编写自己的XML解析器。

SAX本身非常轻巧且快速,因此我不确定为什么会认为它太多了。而且,使用字符串缓冲区实际上 要比 使用SAX 扩展性差得多,
因为SAX不需要您将整个XML文件加载到内存中就可以使用它。我已经使用SAX解析了千兆字节的XML文件,而在32位计算机上使用字符串缓冲区将无法做到这一点。

如果文件很小,而您不必担心性能,请考虑使用DOM。Java的实现可能会令人讨厌使用(您可以使用DocumentBuilderFactory中的DocumentBuilder创建文档)

从文件创建文档的代码如下所示:

Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream("file.xml"));

(请注意,如果需要解析多个文件,保留对文档构建器的引用将加快处理速度)

然后,您可以使用org.w3c.dom.Document中的函数来读取或操作内容。例如,getElementsByTagName()返回具有特定标签名称的所有Elements。

2020-07-27