【问题标题】:XML Parsing : JDOM or RegEx ? Which is faster?XML 解析:JDOM 还是 RegEx?哪个更快?
【发布时间】:2011-07-19 13:26:43
【问题描述】:

我的一位同事需要开发一个 Eclipse 插件,该插件必须解析多个 XML 文件以检查客户端强加的编程规则(例如,没有 xsl:for-each,或者没有声明但未使用的命名空间)。大约有 1000 个文件需要定期解析,每个文件包含大约 300-400 行。

我们想知道哪种解决方案更快。我在考虑 JDOM,他在考虑 RegEx。

谁能帮我们决定哪个最好?

谢谢

【问题讨论】:

  • 由于您无法使用正则表达式解析 XML 文件,因此您别无选择。
  • 我所说的解析是通过文件来读取其中的一部分。
  • 是的,这就是所谓的“解析”,你仍然不能使用正则表达式来解析XML文件。除非您想将其视为纯文本,在这种情况下它不是 XML 文件并且您不能使用 JDOM。无论哪种方式,这里都没有真正的选择。
  • 您的需求需要一个不错的 XML 解析器。因为您的 XML 文档会很大(300-400 行),所以您应该使用基于事件的 API。

标签: java regex eclipse-plugin xml-parsing jdom


【解决方案1】:

如果所有检查都是简单的“否”或没有命名空间,最好使用 StAX 解析器,因为您只是通过它流式传输文档,获取所有开始元素“事件”,然后进行检查。为此,解析器需要相对较少的内存。

如果您需要参照检查,DOM 可能会更好,因为您可以轻松地遍历树(可能通过 xpath)。

【讨论】:

    【解决方案2】:

    您无法使用 RegEx 解析递归结构。因此,除非您有非常简单的 XML 文件,否则 XML 解析会快得多,并且代码会比较健全(这样您就不会花费无休止的时间来定位错误)。

    由于文件非常小,JDom 将使您的工作更加轻松。对于较大的文件,您必须使用 SAX 或类似的解析器(因此您不必将整个文件保存在 RAM 中)。

    【讨论】:

      【解决方案3】:

      如果您尝试使用正则表达式解析 XML,您正在进入一个痛苦的世界。如果速度很重要,那么使用基于事件的 API 可能比 DOM/JDOM 快一点。

      【讨论】:

      • 基于事件的 API 是什么意思?
      【解决方案4】:

      DOM,放下手。 RegEx 将是疯狂的。使用适合这项工作的工具。

      【讨论】:

        猜你喜欢
        • 2018-12-05
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 2011-12-10
        • 2012-08-22
        • 2011-05-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多