SAX解析xml原理以及说明.doc

SAX解析xml原理以及说明.doc

ID:50812555

大小:33.00 KB

页数:3页

时间:2020-03-14

SAX解析xml原理以及说明.doc_第1页
SAX解析xml原理以及说明.doc_第2页
SAX解析xml原理以及说明.doc_第3页
资源描述:

《SAX解析xml原理以及说明.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SAX解析xml的原理以及说明1.所需jar包sax2r2-0.1.jar2.主要原理以及详细内容(1)主要原理除了准备、工厂和类加载、文件初始之外,主要的解析机制以下图案例说明如下:以某标签(例如)开始解析(方法startElement()),继而获取两个相邻标签(例如)之间的内容(方法characters()),如果接下来的标签不是成对的另一个结束标签(例如),则继续执行开始解析标签的操作,直到解析到存在成对的另一个结束标签

2、时,则执行结束操作(方法endElement()),接下来将循环执行这些步骤,直到xml文件解析完毕。(2)实际解析详细内容展示(1)publicvoidparserXml(StringfileName){SAXParserFactorysaxfac=SAXParserFactory.newInstance();//获取工厂类try{Stringpath="C://dataMigration//"+fileName;SAXParsersaxparser=saxfac.newSAXParser()

3、;//初始化实例类saxparser.parse(newFile(path),newMySAXHandler());//调用解析方法(其中newMySAXHandler()为主要的处理逻辑)}catch(ParserConfigurationExceptione){e.printStackTrace();}catch(SAXExceptione){e.printStackTrace();}catch(FileNotFoundExceptione){e.printStackTrace();}cat

4、ch(IOExceptione){e.printStackTrace();}}主要业务逻辑处理类classMySAXHandlerextendsDefaultHandler{StringtagName@OverridepublicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattributes)throwsSAXException{this.tagName=qName//qName为标签的名字(如上图的

5、son>中的person)//Attributes主要用于描述标签中的属性以及取值(如)Stringid=attributes.getQName(0);//获取标签的第一个属性的名字(如果是图中的person标签,则id=“id”)StringidValue=attributes.getValue(0);//获取标签中第一个属性的定义的值(如果是图中的person标签,则id=“1”)intlength=attributes.getLength()

6、;//这里获取到的是标签的所有属性的数量if(this.tagName.equalsIgnoreCase("person")){//定义到开始的标签是person的时候做一些处理}}@Overridepublicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{Stringdata=newString(ch,start,length);//以上方式会读取换行等作为””,所以不建议使用这种方式获取内容,建议创建Strin

7、gBuffer实例,调用newStringBuffer().append(ch,start,length);并调用delete(0,currentValue.length())清理;//这里的data值是两个相邻标签之间的内容,也可以定义为其他可行的数据类型(如StringBuffer等),需要注意的是sax是流式解析,也就意味的所有的相邻标签之间的内容都会在这里获取,所以要做好判断处理if(tagName.equalsIgnoreCase("name")){//定义标签名字是name的时候,可

8、以对获取到的数据进行处理}}@OverridepublicvoidendElement(Stringuri,StringlocalName,StringqName)throwsSAXException{//每当出现标签的时候就会进入该方法(算是触发该方法的条件)if(qName=="person"{//定义出现标签的时候做的处理。}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。