Java:解析XML文件:DOM,SAX还是StAX?

use*_*088 2 java xml stax dom sax

我正在使用Apache Tomcat开发RSS feed聚合器.我想知道使用哪个解析器来读取RSS源.我应该使用DOM,SAX还是StAX?我知道有一些特定的库可以用java阅读RSS源,但由于这是一个大学项目,我不应该使用它们.谢谢.

Old*_*eon 19

这主要取决于您的需求.每个都有自己的功能.

DOM - 将整个内容拉入内存并在内部走动.适用于您希望使用的复杂内容的相对较小的XML块.XSLT使用DOM.

SAX - 当XML到达时观察它们飞过的东西.适用于大量数据或相对简单的处理.

StAX - 很像SAX,但不是响应流中发现的事件而是迭代xml - 请参阅何时应该选择SAX而不是StAX?讨论哪个是最好的.

这里有一个很好的讨论,在Java中使用DOM,SAX和StAX Parser解析XML - 作者:Mohamed Sanaulla.注意:他的SAX解析器有一个错误 - 他应该追加字符,而不是替换它们,因为字符数据是累积的并且可能以块的形式到达.

  content = String.copyValueOf(ch, start, length);
Run Code Online (Sandbox Code Playgroud)

应该

  content += String.copyValueOf(ch, start, length);
Run Code Online (Sandbox Code Playgroud)

还有一篇由Kaan Yamanyar撰写 的博客文章,DOM,SAX或StAX之间存在差异.