我有一个特定格式的 XML 文档,我将被推送。该文档将始终是同一类型,因此非常严格。
我需要对其进行解析,以便将其转换为 JSON(好吧,一个稍微 SCSS 的版本,以便其他人可以将其与 DOJO 一起使用)。
我的问题是,我应该使用非常快速的轻量级(不需要 SAX 等)XML 解析器(有什么想法吗?)还是自己编写,基本上转换为 StringBuffer 并在数组中旋转?基本上,在幕后,我假设所有 HTML 解析器都将遍历字符串(或内存缓冲区)并进行解析,并在解析过程中产生输出。
谢谢
编辑
xml 将在 3/4 行到大约 50 行之间(在极端情况下)..
不,您不应该尝试为此编写自己的 XML 解析器。
SAX 本身非常轻巧且快速,所以我不确定为什么认为它太多了。此外,与使用 SAX 相比,使用字符串缓冲区实际上可扩展性要小得多,因为 SAX 不需要您将整个 XML 文件加载到内存中来使用它。我已经使用 SAX 来解析数 GB 的 XML 文件,在 32 位机器上使用字符串缓冲区无法做到这一点。
如果您有小文件并且不需要担心性能,请考虑使用 DOM。 Java 的实现使用起来可能有点烦人(您使用来自 DocumentBuilderFactory 的 DocumentBuilder 创建文档)
从文件创建文档的代码如下所示:
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream("file.xml"));
(请注意,如果您需要解析多个文件,保留对文档构建器的引用将加快处理速度)
然后你使用org.w3c.dom.Document中的函数阅读或操作内容。例如getElementsByTagName()返回具有特定标签名称的所有元素。