快速,轻量级的XML解析器

joe*_*e90 10 java xml dojo json

我有一个特定的格式XML文档,我将推动.此文档将始终为相同类型,因此非常严格.

我需要解析这个,以便我可以将它转换为JSON(嗯,一个稍微混淆的版本,所以其他人可以使用它与DOJO).

我的问题是,我是否应该使用非常快速的轻量级(不需要SAX等)XML解析器(任何想法?)或编写我自己的,基本上转换为StringBuffer并旋转数组?基本上,我假设所有HTML解析器都将通过字符串(或内存缓冲区)旋转并解析,从而产生输出.

谢谢

编辑

xml将介于3/4行到最大约50行之间(极端情况下).

Cha*_*ere 11

不,你不应该为此编写自己的XML解析器.

SAX本身非常轻巧和快速,所以我不确定为什么认为它太多了.使用字符串缓冲区实际上使用SAX的可伸缩性要小得多,因为SAX不要求您将整个XML文件加载到内存中以使用它.我已经使用SAX来解析多GB的XML文件,在32位计算机上使用字符串缓冲区是不可能的.

如果您有小文件并且不需要担心性能,请考虑使用DOM.Java的实现可能有点烦人(使用DocumentBuilder创建文档,DocumentBuilder来自DocumentBuilderFactory)

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

Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream("file.xml"));
Run Code Online (Sandbox Code Playgroud)

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

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


Jon*_*Jon 7

这实际上取决于您要解析的XML类型.当有东西可以为你完成工作时,我不会编写你自己的解析器.

SAX/DOM的选择实际上是基于您要解析的内容,请参阅此内容以了解如何使用它:

http://geekexplains.blogspot.com/2009/04/sax-vs-dom-differences-between-dom-and.html

即使您不使用SAX/DOM,仍然可以使用简单的选项,看看简单:)

http://simple.sourceforge.net/

您可能还想考虑STaX.