admin 管理员组文章数量: 1184232
2024年4月19日发(作者:做网站无锡)
XML SAX应用程序异常
从上面的案例中,可以看出解析在调用parese方法时,必须使用try-catch语句
来捕获SAXException异常,当SAXException异常发生时,parse方法会离开结束
执行,停止解析过程。实际上,DefaultHandler类中的方法都可以抛出一个SAXEx
ception对象给解析器,比如,事件处理在调用startDocument()方法时,突然决定终
止解析文件,就可以抛出一个SAXException对象给解析器,解析器将停止parse方
法的执行。
现在创建一个案例,演示处理SAX异常。首先创建XML文档,打开记事本,
输入下列代码:
<学生名单>
<学生>
<姓名>崔忠伟姓名>
<出生日期>2006-13-20出生日期>
学生>
学生名单>
将上述代码保存,名称为。创建解析XML文档的Java程序,打
开记事本,输入下列代码:
import s.*;
import s.*;
import .*;
import .*;
import .*;
public class Example9{
public static void main(String args[]){
try{
SAXParserFactory factory=tance();
SAXParser saxParser=Parser();
MyHandler handler=new MyHandler();
(new File(""),handler);
}
catch(Exception e){n(e); }
}
}
class MyHandler extends DefaultHandler{
boolean bo=false;
boolean sa=true;
public void startElement(String uri,String localName,String qName,Attributes atts) {
("<"+qName+">");
if(("出生日期"))
bo=true;
}
public void endElement(String uri,String localName,String qName) {
("<"+qName+">");
}
public void characters(char[] ch,int start,int length) throws SAXException{
String text=new String(ch,start,length);
if(bo==true){
text=();
StringTokenizer fenxi=new StringTokenizer(text,"-");
int number=okens();
String str[]=new String[number];
if(number!=3) {
sa=false;
}
else{
int k=0;
while(eTokens()){
str[k]=ken();
k++;
}
try{
int year=nt(str[0]);
int month=nt(str[1]);
int day=nt(str[2]);
if(year<=1900 || year>=2009)
sa=false;
if(month<=0 || month>=13)
sa=false;
if(day<=0 || day>31)
sa=false;
}
catch(NumberFormatException e){sa=false;}
}
if(sa==false){
throw new SAXException("数据不合理,停止解析");
}
else{
(text);
}
}
else{n(text);}
}
}
将上述代码保存,名称为。打开命令提示符窗口,编译并解释执
行该文件,会显示如图7-10所示窗口:
图7-10 SAX异常处理
该案例中,要求“出生日期”标记中的数据必须是合理的,比如年份必须是4
位数字,而且在1900-2009之间,月份应当在1-12之间,日期应当在1-31之间。
事件处理器在调用characters方法时,如果发现不合理的数据,就抛出一个SAXEx
ception对象给解析器,解析器停止parse方法的执行,不再报告任何事件给事件处
理器。
在character方法中,使用StringTokenizer类对获取的文本数据text进行拆分,
分隔符为“-”。如果获取的text数据拆分后,其大小不等于3,则将sa赋值为false。
调用nextToken方法获取拆分后的数据并存储到字符串数组str中。将数组str中的
数据进行转换,并分别赋值为year、month和day。下面使用if语句进行判断,如
果不符合条件,则将sa赋值为false。
版权声明:本文标题:XML SAX应用程序异常 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713473573a636424.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论