XML 解析:JDOM 还是 RegEx?哪个更快?

发布于 2024-10-24 04:32:16 字数 241 浏览 2 评论 0原文

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

我们想知道哪种解决方案执行速度更快。我想到的是 JDOM,他想到的是 RegEx。

任何人都可以帮助我们决定哪个是最好的?

谢谢

A colleague of mine needs to develop an Eclipse plugin that has to parse multiple XML files to check for programming rules imposed by a client (for example, no xsl:for-each, or no namespaces declared but not used). There are about a 1000 files to be parsed regularly, each file containing about 300-400 lines.

We were wondering which solution was faster to do it. I'm thinking JDOM, and he's thinking RegEx.

Anyone can help us decide which is best ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ˉ厌 2024-10-31 04:32:16

DOM,放下手来。正则表达式将是疯狂的。使用适合该工作的工具。

DOM, hands down. RegEx would be madness. Use the tool that was intended for the job.

千纸鹤带着心事 2024-10-31 04:32:16

您无法使用正则表达式解析递归结构。因此,除非您有非常简单的 XML 文件,否则 XML 解析将会快得多,并且代码也会比较合理(因此您不会花费无尽的时间来查找错误)。

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

You can't parse recursive structures with RegEx. So unless you have really simple XML files, XML parsing will be much faster and the code will be somewhat sane (so you won't spend endless hours to locate bugs).

Since the files are pretty small, JDom will make your job much easier. For larger files, you will have to use a SAX or similar parser (so you don't have to keep the whole file in RAM).

Hello爱情风 2024-10-31 04:32:16

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

I you try to parse XML using regular expressions, you are entering a world of pain. If speed is important, using a event-based API might be a tad faster than DOM/JDOM.

染年凉城似染瑾 2024-10-31 04:32:16

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

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

If all checks are simple "no " or no namespace, a StAX parser would be best, as you are just streaming the documents through it, get all the start elements 'events' and then do your checking. For this, the parser needs relatively little memory.

If you need to referential checking, DOM may be better, as you can easily walk the tree (perhaps via xpath).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文