我的一位同事需要开发一个 Eclipse 插件,该插件必须解析多个 XML 文件以检查客户端强加的编程规则(例如, noxsl:for-each
或没有声明但未使用的命名空间)。大约有 1000 个文件需要定期解析,每个文件包含大约 300-400 行。
我们想知道哪种解决方案更快。我在考虑 JDOM,他在考虑 RegEx。
任何人都可以帮助我们决定哪个是最好的?
谢谢
我的一位同事需要开发一个 Eclipse 插件,该插件必须解析多个 XML 文件以检查客户端强加的编程规则(例如, noxsl:for-each
或没有声明但未使用的命名空间)。大约有 1000 个文件需要定期解析,每个文件包含大约 300-400 行。
我们想知道哪种解决方案更快。我在考虑 JDOM,他在考虑 RegEx。
任何人都可以帮助我们决定哪个是最好的?
谢谢
DOM,放下手。RegEx 将是疯狂的。使用适用于该工作的工具。
您无法使用 RegEx 解析递归结构。因此,除非您有非常简单的 XML 文件,否则 XML 解析会快得多,并且代码会比较健全(这样您就不会花费无休止的时间来定位错误)。
由于文件非常小,JDom 将使您的工作更加轻松。对于较大的文件,您必须使用SAX或类似的解析器(因此您不必将整个文件保存在 RAM 中)。
如果您尝试使用正则表达式解析 XML,您正在进入一个痛苦的世界。如果速度很重要,使用基于事件的 API 可能比 DOM/JDOM 快一点。
如果所有检查都是简单的“无”或没有命名空间,最好使用 StAX 解析器,因为您只是通过它流式传输文档,获取所有开始元素“事件”,然后进行检查。为此,解析器需要相对较少的内存。
如果您需要参照检查,DOM 可能会更好,因为您可以轻松地遍历树(可能通过 xpath)。