XML基础教程2版第5章的代码代码.doc_第1页
XML基础教程2版第5章的代码代码.doc_第2页
XML基础教程2版第5章的代码代码.doc_第3页
XML基础教程2版第5章的代码代码.doc_第4页
XML基础教程2版第5章的代码代码.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章SAX解析器5.1 初识SAX解析器例子1example5_1.xml 张小三 男 SAXOne.javaimport org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXOne public static void main(String args) try File file=new File(example5_1.xml); SAXParserFactory factory=SAXParserFactory.newInstance() ; SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(); /事件处理器 saxParser.parse(file,handler); System.out.println(事件处理器处理了+handler.count+个事件); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler int count=0; public void startElement(String uri,String localName,String qName,Attributes atts) System.out.print(); count+; public void endElement(String uri,String localName,String qName) System.out.print(); count+; public void characters(char ch,int start,int length) String text=new String(ch,start,length); System.out.print(text); count+; public void startDocument() System.out.println(开始解析XML文件); count+; public void endDocument() System.out.println(解析过程结束); count+; 5.2 文档开始与结束事件例子2example5_2.xml XML基础教程(第2版) 26元 JSP基础教程(第二版) 28元 SAXTwo.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXTwo public static void main(String args) try File file=new File(example5_2.xml); SAXParserFactory factory=SAXParserFactory.newInstance() ; SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(file); saxParser.parse(file,handler); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler File file; long timeStart=0,timeEnd=0; public EventHandler(File f) file=f; public void startDocument() timeStart=System.currentTimeMillis(); System.out.println(开始解析XML文件); System.out.println(文件长度:+file.length(); public void endDocument() timeEnd=System.currentTimeMillis(); System.out.println(解析过程结束); System.out.println(所用时间:+(timeEnd-timeStart)+毫秒); 5.3 标记开始与结束事件例子3example5_3.xml 北京 华盛顿 SAXThree.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXThree public static void main(String args) try File file=new File(example5_3.xml); SAXParserFactory factory=SAXParserFactory.newInstance() ; factory.setNamespaceAware(true); SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(); saxParser.parse(file,handler); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler int count=0; public void startElement(String uri,String localName, String qName,Attributes atts) count+; System.out.print(+qName+ ); for(int k=0;k); if(uri.length()0) System.out.println(标记隶属的名称空间是+uri); public void endElement(String uri,String localName,String qName) System.out.println(); public void endDocument() System.out.printf(n解析过程结束,共有%d个标记,count); 5.4 文本事件例子4example5_4.xml 张三 清华大学 李四 北京大学 SAXFour.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXFour public static void main(String args) try File file=new File(example5_4.xml); SAXParserFactory factory=SAXParserFactory.newInstance() ; SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(); saxParser.parse(file,handler); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler int textEventCount; public void characters(char ch,int start,int length) textEventCount+; String text=new String(ch,start,length); text=text.trim(); if(text.length()=0) System.out.println(第 +textEventCount+ 次文本事件处理的文本是空白字符); else System.out.println(第 +textEventCount+ 次文本事件处理的文本是+text+); 例子5example5_5.xml 张三 89 77 李四 92 65 SAXFive.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXFive public static void main(String args) try File file=new File(example5_5.xml); SAXParserFactory factory=SAXParserFactory.newInstance() ; SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(); saxParser.parse(file,handler); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler boolean isComputabled,math,english; int count; double mathSum,englishSum,personSum; StringBuffer numberContent,otherContent; public void startElement(String uri,String localName, String qName,Attributes atts) numberContent=new StringBuffer(); otherContent=new StringBuffer(); System.out.print(); if(qName.endsWith(成绩) isComputabled=true; if(qName.startsWith(数学) math=true; if(qName.startsWith(英语) english=true; if(qName.equals(学生) personSum=0; count+; public void characters(char ch,int start,int length) String text=new String(ch,start,length); if(isComputabled=true) numberContent.append(text); System.out.print(text); public void endElement(String uri,String localName,String qName) System.out.print(); if(isComputabled) String numberStr=new String(numberContent); numberStr=numberStr.trim(); double d=Double.parseDouble(numberStr); personSum=personSum+d; if(math) mathSum=mathSum+d; if(english) englishSum=englishSum+d; isComputabled=false; math=false; english=false; if(qName.equals(学生) System.out.print(该学生的总成绩:+personSum); public void endDocument() System.out.println(); System.out.println(共有+count+名学生); System.out.println(数学平均成绩:+mathSum/count); System.out.println(英语平均成绩:+englishSum/count); 5.5名称空间事件例子6example5_6.xml Java 程序设计 JSP 程序设计 Java 程序设计 JSP 程序设计 SAXSix.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXSix public static void main(String args) try File file=new File(example5_6.xml); SAXParserFactory factory=SAXParserFactory.newInstance() ; factory.setNamespaceAware(true); SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(); saxParser.parse(file,handler); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler int count=0; String uri; public void startPrefixMapping(String prefix,String uri) count+; System.out.print(前缀:+prefix+ ); System.out.println(名称空间的名称:+uri); public void characters(char ch,int start,int length) String text=new String(ch,start,length); if(uri!=null&uri.equals(清华大学出版社) System.out.print(text); public void startElement(String uri,String localName, String qName,Attributes atts) this.uri=uri; if(uri.equals(清华大学出版社) System.out.print(); public void endElement(String uri,String localName,String qName) if(uri.equals(清华大学出版社) System.out.println(); public void endDocument() System.out.println(解析过程结束,报告了+count+次名称空间); 5.6 错误事件例子7sevenDTD.dtdexample5_7.xml 电视机 2010-12-20 5676 元/台 洗衣机 6686 元/台 2009-10-19 SAXSeven.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;public class SAXSeven public static void main(String args) try File file=new File(example5_7.xml); SAXParserFactory factory=SAXParserFactory.newInstance(); factory.setNamespaceAware(true); factory.setValidating(true); SAXParser saxParser=factory.newSAXParser(); EventHandler handler=new EventHandler(); saxParser.parse(file,handler); catch(Exception e) System.out.println(e); class EventHandler extends DefaultHandler public void warning(SAXParseException e)throws SAXException String warningMessage=e.getMessage(); int row=e.getLineNumber(); int colums=e.getColumnNumber(); System.out.println(警告:+warningMessage+位置:+row+,+colums); System.out.println(publicId:+e.getPublicId(); System.out.println(systemId:+e.getSystemId(); public void error(SAXParseException e) throws SAXException String errorMessage=e.getMessage(); int row=e.getLineNumber(); int colums=e.getColumnNumber(); System.out.println(一般错误:+errorMessage+位置:+row+,+colums); System.out.println(publicId:+e.getPublicId(); System.out.println(systemId:+e.getSystemId(); public void fatalError(SAXParseException e) throws SAXException String fatalErrorMessage=e.getMessage(); int row=e.getLineNumber(); int colums=e.getColumnNumber(); System.out.println(致命错误:+fatalErrorMessage+位置:+row+,+colums); System.out.println(publicId:+e.getPublicId(); System.out.println(systemId:+e.getSystemId(); throw new SAXException(致命错误,停止解析); public void startDocument() System.out.println(开始解析XML文件); public void endDocument() System.out.println(解析过程结束); public void startElement(String uri,String localName, String qName,Attributes atts) System.out.print(); public void endElement(String uri,String localName,String qName) System.out.print(); public void characters(char ch,int start,int length) String text=new String(ch,start,length); System.out.print(text); public void ignorableWhitespace(char ch,int start,int length) String text=new String(ch,start,length); System.out.print(text); 5.7 处理空白例子8SAXEight.javaimport javax.xml.par

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论