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

2023-11-29

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

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

  • Ease of configuration
    • 配置是否在单独的文件中?
    • 是否有合理的默认值?
  • Ease of use
    • 节点导航 - 到兄弟节点、到子节点、到父节点。
    • 访问/操作命名空间、属性、文本。
    • 类层次结构是经过深思熟虑的还是自然的?
  • Invalid XML - what happens (when does it fail?), and what can I do when:
    • 遇到无效字符(编码或 XML 规范中禁止)
    • 树结构无效(例如,由于未转义的 HTML 标签)

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

  • 性能比较
  • 可用实现的列表

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

  • 它可以是 Java 标准(DOM、SAX、StAX、JAXP),也可以是特定于实现的 API。
  • 它可以是 JVM 上任何语言的 API(Scala、Groovy、Jython、JRuby...)——只需确保它与标准 Java API 相比添加了一些内容即可。

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


jaxp 不是一个实现,而是一个包装器/外观 api,您可以在其中插入多个解析器实现。所以你只剩下 sax、dom 和 stax。现在下面是两个很好的比较,你可以算一下:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java SE 平台上 XML 解析 API 的比较 的相关文章

随机推荐

  • 删除 Vuetify 中默认的 v-input-file 图标

    v file input是 Vuetify v2 中出现的新组件
  • 以编程方式切换键盘配置文件

    有什么方法可以让我们以编程方式切换已安装的键盘 无需手动进入设置部分 我的要求是向用户展示手机上安装的所有键盘 并获得一个选择器对话框以切换到想要的键盘 基本上我们想减少把他转移到设置页面的步骤 这段代码将满足您的要求 InputMetho
  • 为什么 Heroku 的 heroku-18 堆栈仅与 Puma 版本 3.7.x 兼容?

    通过反复试验 我确定从 Heroku 升级heroku 16堆叠到heroku 18stack 需要我在 Rails 应用程序中更新 Puma 下面是为 puma gem 构建本机扩展的失败 您能解释一下为什么 v3 7 之前的 puma
  • 将 tar/gzip 添加到 Windows 命令行

    正如标题所说 有人知道将 tar gzip 添加到 Windows 命令行的方法吗 我已经安装了 Cygwin 但不知道是否必须在 PATH 环境变量中添加一些内容才能将 tar 作为 cmd 选项 我用来解决这个问题的方法是安装 Cygw
  • 绘制矩形并填充外部边界

    我正在绘制一个矩形 并在矩形外部填充 我尝试了其中一些 但无法得到我所期望的完美的 这正是我所期望的 我试过 Point pTopLeft new Point Point pBotRight new Point pTopLeft x 100
  • PHP 标头重定向到具有时间间隔的多个 URL

    我可以使用 header 重定向到多个具有时间间隔的 URL 吗 假设我有 url1 和 url2 现在 我想要的是标头首先重定向到 url1 然后说 5 秒后 它会将我重定向到 url2 我有办法做到这一点吗 我尝试了下面的简单代码 但这
  • CarrierWave 和正确的文件扩展名取决于其内容

    如何使 CarrierWave 根据文件名添加正确的扩展名 其内容 例如 如果我上传文件 logo PNG文件 不带扩展名 CarrierWave 应将其保存为 logo png 文件 img gif 扩展名不正确的JPG文件 应分别保存为
  • 将向量插入矩阵的特定列

    如何将向量 b 插入到矩阵的 col 列中 我在 Fortran 中找不到插入或附加函数的任何语法 到目前为止 我所做的只是重新分配列中的值 但我只想插入向量 real M n n integer n col real b n M n co
  • Objective-C 2.0 和快速枚举抛出异常

    我有一个类似于以下内容的代码块 for NSDictionary tmp in aCollection if bar valueForKey id isEqualToString tmp valueForKey id break else
  • Mobile Jquery - 翻转效果

    请找到下面的网址 http jquerymobile com demos 1 1 0 docs pages page transitions html 如何在页面加载或 document onReady 上使用这些效果 在标准页面上从 jQ
  • 并发 HttpWebRequest 的限制

    NET 一次允许的并发 HttpWebRequest 数量是否有限制 我不确定overall限制 但是单个主机名的并发连接数肯定是有限制的 它可以配置在
  • glMultMatrix 在 glBegin() 内部不起作用

    我正在创建一个程序 允许我在 3 个空间中绘制点 使用 Catmull Rom 样条线连接它们 然后在样条线周围绘制一个圆柱体 我在用GL TRIANGLES STRIP以短间隔连接围绕样条线绘制的点的圆圈 希望将它们全部连接在一起形成围绕
  • Maven:在构建期间将资源从 jar 添加到 WEB-INF

    我想从依赖项 jar 添加资源 该依赖项位于myjar jar META INF 公共资源 myresource sk to my web应用程序 WEB INF myfolder在 mvn 打包目标期间 有谁可以提供建议 如何做到这一点
  • 创建一组匿名函数,其参数在定义时定义

    我正在尝试逐步重构现有代码 我定义了一组函数 它们仅在一个内部参数上有所不同 function loadGame1 void loadGame save1 function loadGame2 void loadGame save2 fun
  • 使用 Delphi6 将图像存储在 MS-Access 数据库中

    如何使用 Blob 数据类型在 MS Access 数据库中存储图像 我想使用记录类型来存储数据 那么 如何处理Record Type中的图像保存到数据库中呢 编辑 我想用图像存储数据 我有以下记录类型 type TPersonInfoRe
  • 如何在 Windows 上最大化窗口并禁用调整大小而不覆盖任务栏 - tkinter / tk-toolkit

    我使用 Tkinter 用 python 编写了一个应用程序 我希望它能够缩放并且不能调整大小 但是当我这样做时 它会隐藏我想保留的任务栏 有什么办法可以做到吗 from tkinter import root Tk root state
  • 在引用上调用虚函数

    在下面的代码中 为什么最后一次调用eat 关于参考c返回 动物 b 正在吃东西 据我了解 c是对实例的引用b派生类的Dog and eat 是一个虚函数 所以它应该已经返回 狗b正在吃东西 include
  • 将 64 位时间戳转换为可读值

    在我的数据集中 我有两个时间戳列 第一个是自应用程序启动以来的微秒 例如 1400805323 第二个被描述为 64 位时间戳 我希望它能够指示时钟时间 使用 1901 年 1 月 1 日开始的秒数 NTP 格式 64 位 时间戳示例 12
  • MySQL:如何重置或更改MySQL根密码?

    如何更改 ubuntu 服务器中的 MySQL root 密码和用户名 在进行任何更改之前我需要停止 mysql 服务吗 我也有 phpmyadmin 设置 phpmyadmin 会自动更新吗 在 Ubuntu Linux 上设置 更改 重
  • Java SE 平台上 XML 解析 API 的比较

    我目前正在开发一个 RSS 提要阅读器 我想知道哪种 XML 解析 API 最适合它 请注意 我并不是在寻找 Feed 解析器库 它只是有关 XML API 研究的起点 我正在寻找 Java 平台上各种 XML 解析 API 的概要 重点关