您的位置:首页 > 其它

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

2008-10-07 14:53 162 查看
随着 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中国

请点击此处查看全文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: