java - 快速、轻量级的 XML 解析器

标签 java xml json dojo

<分区>

我有一个特定格式的 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()返回具有特定标签名称的所有元素。

关于java - 快速、轻量级的 XML 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134507/

相关文章:

java - 在Java中通过键名解析JSON

java - 如何知道FTP欢迎消息的结束

java - MySQL更改为utf8mb4后,Error Unknown character set index for field '224' received from server

Java:根据 "\n"的数量从字符位置计算行号

c# - 使用linq to xml用单引号保存xml元素的属性值

html - Json 服务以 HTML 形式返回

java - 是否可以在 Java 中创建任何编译时函数?

php - xml:lang 在 PHP 中解析

xml - 如果它们是字符串列表,如何获取值属性的内容并在 XSLT 中拆分它们?

Python Lambda 函数解析 DynamoDB 的 JSON 格式