使用 SAX 处理 XML 解析中的错误

59 篇文章 0 订阅
随着 Java™ 语言 API 不断更新,XML 解析变得更加容易,从 JAXP 到 JAXB,再到 JAX-WS,XML 解析已经成为 Java 编程的重要部分。但是,随着抽象和更高级 API 的出现,无法控制解析器和 XML 数据之间的细粒度交互。这通常会引起更多错误,甚至情况更糟,即使最小的错误也会造成解析完全停止。幸运的是,Simple API for XML(SAX)仍然提供了一种易于使用的方法来处理错误,即使没有直接使用 SAX,仍然可以访问这种机制。

在更新的 Java 语言 API(JAXP、JAXB 和 JAX-WS 等)中解析 XML 变得如此容易,以至于 XML 解析已成为 Java 编程的重要方面。但是,更高级的 API 中的抽象使得无法细粒度控制解析器和数据之间的交互,因此存在潜在的问题。在本文中,我将展示 SAX 如何提供一种易于使用的方法来处理这些错误,即使您没有直接使用 SAX,仍然可以使用这种方法。

错误处理避免程序崩溃

常用缩写词
  • API:应用程序编程接口(Application Programming Interface)
  • DOM:文档对象模型(Document Object Model)
  • JAXB:Java Architecture for XML Binding
  • JAXP:Java API for XML Processing
  • JAX-WS:Java API for XML Web Services
  • SAX:Simple API for XML
  • URI:统一资源标识符(Uniform Resource Identifier)
  • URL:统一资源定位符(Uniform Resource Locator)
  • W3C:万维网联盟(World Wide Web Consortium)
  • XML:可扩展标记语言(Extensible Markup Language)

每个应用程序首先是一个应用程序用户。无论是 vi、emacs、DreamWeaver® 还是 Adobe® Photoshop®,在决定如何构建某个应用程序时,主要靠参考对其他应用程序的体验。因此,现代应用程序(特别是 Web 应用程序)中的错误处理就是在屏幕中显示无用的数字和字典中找不到的奇怪字母。如果幸运的话,还会出现某种字体格式的致歉。这是一种非常拙劣的在应用程序中处理问题的方式。

您的应用程序 出现错误,这是人人都懂的道理,但是会使情况变得更糟。正如您找到了通过使用不同类路径启动同步构建而使 Eclipse 崩溃的独特方法,应用程序的用户,即您的程序将设法中止未结束的线程,没有从请求变量中获得数据就访问 servlet,或者使 MySQL® 数据库承担大量开放连接。

当涉及 XML 时,用户经常在字段中填充错误的数据,或试图使用仍然无效的数据跳过验证。如果您的程序使用另外一个公司的 XML,则发生错误的可能性涉及多方面。现在您信任另外一家公司,为保证数据格式的每个细节都正确,他们的程序员和您们一样在超负荷工作。在这些情况下(普遍且各种各样),XML 解析将中断,并抛出一个不明确的异常。将功能打包到这样的块中:

try {
// some interesting and complex XML processing code
} catch (Exception e) {
System.err.println(e.getMessage());
}
 


本文转自IBM Developerworks中国

      请点击此处查看全文


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值