资源描述
Click to edit Master title style,*,人民邮电出版社,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,XML,技术基础,主讲:蔡体健,第七章,XML,应用编程,本课目标,DOM,接口与,SAX,接口的结合使用,XML,与数据库编程,DOM,与数据库编程例题,SAX,与数据库编程例题,DOM,接口与,SAX,接口的结合使用,DOM,接口和,SAX,接口各有优缺点。,DOM,主要的优点体现在:通过,DOM,树的操作很容易实现随机的访问。其主要缺点体现在:当,XML,文件很大时或者结构比较复杂时,对内存的要求很高。,而对,SAX,来说,虽缺乏对文档处理的灵活性,但对于那些只需访问文档中的数据而不需对文档进行更新的应用程序而言,,SAX,比,DOM,需要更少的内存,具有更高的效率。,一个很自然的想法是结合二者的优点,让,SAX,解析器获取相应的数据,用,DOM,解析器根据新的需要形成一个,XML,文件。,DOM,接口与,SAX,接口的结合使用例题,王培,56,程雪方,60,周昌举,34,王尚,78,将此,XML,文档中所有学生的姓名取出,并保存到,“,学生姓名表,.xml”,中。,王培,程雪方,周昌举,王尚,DOM,接口与,SAX,接口的结合使用例题,生成得到的,“,学生姓名表,.xml”,。,DOM,接口与,SAX,接口的结合使用例题,引入相关包;,public class SAX7_7,public static void,main(String,args,),try,创建,SAX,解析器对象;,注册事件监听者,MyHandler,;,用,SAX,解析器解析,XML,文档,并产生各种事件;,创建,DOM,解析器;,创建,document,对象;,按要求为,DOM,树添加节点,其中学生姓名元素值是来源于,str1,数组;,保存,学生姓名表,.xml;,catch(Exception,e),System.out.println(e,);,SAX7_7.java,DOM,接口与,SAX,接口的结合使用例题,class,MyHandler,extends,DefaultHandler,String str1=new String4;,boolean,letter=false;,int,i=0;,public void,startElement(String,uri,String,localName,String,qName,Attributes,atts,),if(qName.equals,(,学生姓名,),letter=true;,public void,characters(char,ch,int,start,int,length),String text=new,String(ch,start,length,);,if(letter,),str1i=,text.trim,();,i+;,letter=false;,SAX7_7.java,续,返回本课目标,XML,与数据库编程,一方面,,XML,是表示数据的很好工具;另一方面,数据库又可高效安全地存储数据。,将大量的,XML,数据存放在数据库中是较好的选择。,为此,多数,XML,应用需要完成,XML,与数据库的交互,并且将,XML,数据同应用程序集成,进而使之同现有的业务规则相结合。,DOM,与数据库编程例题,莫佳,123,0,蔡体健,abc,1,林冲,ABC,2,从,xml.mdb,数据库提取信息,并生成“用户表,.xml”,文档,DOM,与数据库编程例题,引入相关包;,class DOM7_8.java,public static void,main(String,args,),初始化数组和变量;,try,连接数据库;,读取数据表中的数据,并存入相应数组;,创建,DOM,解析器对象;,创建空,document,对象;,从数组中提取数据,为,DOM,树添加节点,;,保存,DOM,树到磁盘中,catch(Exception,e),System.out.println(e,);,DOM7_8.java,返回本课目标,SAX,与数据库编程例题,将以下,XML,文档的数据写入数据库:,黑旋风,123,0,宋江,abc,1,SAX,与数据库编程例题,引入相关包;,public class SAX7_9,public static void,main(String,args,),try,创建,SAX,解析器对象,注册事件监听者;,解析,XML,文档,产生各种事件;,创建,Data,对象;,调用,Data,对象的,conn,(),方法连接数据库;,调用,Data,对象的,st,(),方法将各数组中的数据插入数据库;,catch(Exception,e),System.out.println(e,);,e.printStackTrace,();,DOM7_9.java,SAX,与数据库编程例题,class Data,Connection con=null;,Statement,st,=null;,public void,conn,(),连接数据源;,public void,st(String,sql,),插入数据到数据库;,DOM7_9.java,续,SAX,与数据库编程例题,class,MyHandler,extends,DefaultHandler,初始化数组和变量;,public void,startElement(String,uri,String,localName,String,qName,Attributes,atts,),if(qName.equals,(,用户姓名,),mingzi,=true;,if(qName.equals,(,用户密码,),mima,=true;,if(qName.equals,(,用户权限,),quanxian,=true;,public void,characters(char,ch,int,start,int,length),String text=new,String(ch,start,length,);,if(mingzi,),str1i=,text.trim,();,i+;,mingzi,=false;,DOM7_9.java,续,返回本课目标,小结,SAX API,和,DOM API,可以联合使用,取长补短。,SAX API,和,DOM API,可以完成,XML,文档与数据库的相互转换。,作业:,编写一个,SAX,程序统计,student.xml,文档中学生人数,编写一个,SAX,程序,了解所有所学的事件发生的先后顺序。,休息,
展开阅读全文