Java SE平台上的XML解析API的比较

时间:2010-07-13 13:30:50

标签: java xml parsing jvm-languages

我目前正在开发一个RSS提要阅读器,我想知道哪种XML解析API最适合它。 (请注意,我不是在寻找Feed解析器库 - 它只是关于XML API的研究的起点)

我正在寻找Java平台上各种XML解析API的概要,重点关注以下标准:

  • 易于配置
    • 配置是否在单独的文件中?
    • 是否有合理的默认值?
  • 易于使用
    • 节点导航 - 兄弟姐妹,儿童,父母。
    • 访问/操作命名空间,属性,文本。
    • 班级层次结构是否经过深思熟虑或自然?
  • 无效的XML - 会发生什么(何时失败?),以及在以下情况下我该怎么做:
    • 遇到无效字符(在编码或XML规范中禁止)
    • 树结构无效(例如,由于未转义的HTML标记)

以下是一些我认为有用但不重要的信息:

  • 效果比较
  • 可用实施列表

我目前正在考虑JVM上的任何XML API。

  • 它可以是Java标准(DOM,SAX,StAX,JAXP)或特定于实现的API。
  • 它可以是JVM上任何语言的API(Scala,Groovy,Jython,JRuby ......) - 只需确保它与标准Java API相比增加了一些东西。

我认为构建这个线程的一个好方法是每个答案只有一个API。

2 个答案:

答案 0 :(得分:0)

jaxp不是一个实现,而是一个包装器/外观api,你可以在其中插入多个解析器实现。所以你留下萨克斯,dom和stax。现在下面是两个很好的比较,你做了数学运算:

http://techstop.abidshafiq.com/2010/02/java-xml-api-comparison/ http://java.sun.com/performance/reference/whitepapers/StAX-1_0.pdf

答案 1 :(得分:0)

看这里,你会得到一把! http://www.xml.com/pub/rg/Java_Parsers

但是,我见过我的一些朋友在他们的项目中使用这个。虽然JAXP被广泛使用,但这个看起来很有希望。

Apache Xerces解析器版本1.2.3(http://xerces.apache.org/xerces-j/