使用 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,仍然可以使用这种方法。
错误处理避免程序崩溃
每个应用程序首先是一个应用程序用户。无论是 vi、emacs、DreamWeaver® 还是 Adobe®
Photoshop®,在决定如何构建某个应用程序时,主要靠参考对其他应用程序的体验。因此,现代应用程序(特别是 Web
应用程序)中的错误处理就是在屏幕中显示无用的数字和字典中找不到的奇怪字母。如果幸运的话,还会出现某种字体格式的致歉。这是一种非常拙劣的在应用程序中处理问题的方式。
您的应用程序将 出现错误,这是人人都懂的道理,但是会使情况变得更糟。正如您找到了通过使用不同类路径启动同步构建而使 Eclipse
崩溃的独特方法,应用程序的用户,即您的程序将设法中止未结束的线程,没有从请求变量中获得数据就访问 servlet,或者使 MySQL®
数据库承担大量开放连接。
当涉及 XML 时,用户经常在字段中填充错误的数据,或试图使用仍然无效的数据跳过验证。如果您的程序使用另外一个公司的
XML,则发生错误的可能性涉及多方面。现在您信任另外一家公司,为保证数据格式的每个细节都正确,他们的程序员和您们一样在超负荷工作。在这些情况下(普遍且各种各样),XML
解析将中断,并抛出一个不明确的异常。将功能打包到这样的块中:
本文转自IBM Developerworks中国
请点击此处查看全文
Java 编程的重要部分。但是,随着抽象和更高级 API 的出现,无法控制解析器和 XML
数据之间的细粒度交互。这通常会引起更多错误,甚至情况更糟,即使最小的错误也会造成解析完全停止。幸运的是,Simple API for
XML(SAX)仍然提供了一种易于使用的方法来处理错误,即使没有直接使用 SAX,仍然可以访问这种机制。
在更新的 Java 语言 API(JAXP、JAXB 和 JAX-WS 等)中解析 XML 变得如此容易,以至于 XML 解析已成为 Java
编程的重要方面。但是,更高级的 API 中的抽象使得无法细粒度控制解析器和数据之间的交互,因此存在潜在的问题。在本文中,我将展示 SAX
如何提供一种易于使用的方法来处理这些错误,即使您没有直接使用 SAX,仍然可以使用这种方法。
错误处理避免程序崩溃
|
Photoshop®,在决定如何构建某个应用程序时,主要靠参考对其他应用程序的体验。因此,现代应用程序(特别是 Web
应用程序)中的错误处理就是在屏幕中显示无用的数字和字典中找不到的奇怪字母。如果幸运的话,还会出现某种字体格式的致歉。这是一种非常拙劣的在应用程序中处理问题的方式。
您的应用程序将 出现错误,这是人人都懂的道理,但是会使情况变得更糟。正如您找到了通过使用不同类路径启动同步构建而使 Eclipse
崩溃的独特方法,应用程序的用户,即您的程序将设法中止未结束的线程,没有从请求变量中获得数据就访问 servlet,或者使 MySQL®
数据库承担大量开放连接。
当涉及 XML 时,用户经常在字段中填充错误的数据,或试图使用仍然无效的数据跳过验证。如果您的程序使用另外一个公司的
XML,则发生错误的可能性涉及多方面。现在您信任另外一家公司,为保证数据格式的每个细节都正确,他们的程序员和您们一样在超负荷工作。在这些情况下(普遍且各种各样),XML
解析将中断,并抛出一个不明确的异常。将功能打包到这样的块中:
try { // some interesting and complex XML processing code } catch (Exception e) { System.err.println(e.getMessage()); } |
请点击此处查看全文
相关文章推荐
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]
- 解析xml文件时,错误信息org.xml.sax.SAXParseException:Parser has reached the entity expansion limit "64,000" se
- php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
- Java XML解析 - 使用SAX 示例
- 使用 SAX 处理 XML 文档
- 2011.8.17---2011.8.18 (查询bug---contactWidget中使用自定义的view在launcher中显示不出来,报解析xml的错误)
- 使用SAX方式对XML进行解析
- SAX解析xml 例子使用
- 用SAX方式解析XML(使用Dom4J工具)--第二天
- 使用 SAX 处理 XML 文档
- xml数据处理--sax模块使用
- Android使用SAX实现XML解析,使用text/xml格式与后台交互
- stax解析xml时, 使用栈来处理,不错的代码
- Java&Xml教程(五)使用SAX方式解析XML文件
- XML解析之sax解析案例(二)使用sax解析把 xml文档封装成对象
- 使用SAX解析XML之补遗
- java解析XML saxReader.read(xml) 错误:org.dom4j.DocumentException: no protocol
- Android 使用Dom与SAX解析xml文档的方式
- Android中SAX解析XML的使用