加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SAX解析XML文件

发布时间:2020-12-16 00:20:30 所属栏目:百科 来源:网络整理
导读:XML(eXtended Markup Language,可扩展标记性语言)提供了一套跨平台,跨网络,跨程序的语言数据描述方式,使用XML可以方便地实现数据交换,系统配置,内容管理等常见功能。 使用SAX 解析XML文件,是顺序读入需要的文件内容,不受文件大小的限制,由于采用部
XML(eXtended Markup Language,可扩展标记性语言)提供了一套跨平台,跨网络,跨程序的语言数据描述方式,使用XML可以方便地实现数据交换,系统配置,内容管理等常见功能。

使用SAX 解析XML文件,是顺序读入需要的文件内容,不受文件大小的限制,由于采用部分读取,只能对文件按从头到尾解析一遍,不支持文件的随意存取,只能读着xml文件的内容,但不能修改,当然,这种解析方式,在开发上比较复杂,需要自定义事件处理器,对于开发人员更加灵活,可以用sax建立对xml对象模型。

现在开始用代码来实现SAX解析的方法,如下:

XML文件如下:

 
 
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <?xml-stylesheettype="text/css"href="attrib.css"?>
  3. <addresslist>
  4. <linkmanid="zlj">
  5. <name>xt</name>
  6. <email>xxxx@sina.com</email>
  7. </linkman>
  8. <linkmanid="zs">
  9. <name>张三</name>
  10. <email>XXXXX@sina.com</email>
  11. </linkman>
  12. </addresslist>

首先要自定义一个SAX的XML解析器,代码如下:

 
 
  1. packagecom.etc.sax;
  2. importorg.xml.sax.Attributes;
  3. importorg.xml.sax.SAXException;
  4. importorg.xml.sax.helpers.DefaultHandler;
  5. /**
  6. *用sax来解析xml
  7. *sax解析器
  8. *@authorzhanglj
  9. *
  10. *2012-12-19
  11. */
  12. publicclassMySaxextendsDefaultHandler{
  13. @Override
  14. publicvoidstartDocument()throwsSAXException{//文档开始
  15. System.out.println("<?xmlversion="1.0"encoding="UTF-8"?>");
  16. }
  17. @Override
  18. publicvoidendDocument()throwsSAXException{
  19. System.out.println("n文档读取结束............");
  20. }
  21. @Override
  22. publicvoidstartElement(Stringuri,StringlocalName,Stringname,
  23. Attributesattributes)throwsSAXException{
  24. System.out.print("<");
  25. System.out.print(name);
  26. if(attributes!=null){
  27. for(inti=0;i<attributes.getLength();i++){
  28. System.out.print(""+attributes.getQName(i)+"=""+attributes.getValue(i)+""");
  29. }
  30. }
  31. System.out.print(">");
  32. }
  33. @Override
  34. publicvoidcharacters(char[]ch,intstart,intlength)
  35. throwsSAXException{
  36. System.out.print(newString(ch,start,length));
  37. }
  38. @Override
  39. publicvoidendElement(Stringuri,Stringname)
  40. throwsSAXException{
  41. System.out.print("</");
  42. System.out.print(name);
  43. System.out.print(">");
  44. }
  45. }

然后对XML文件进行解析,代码如下:

 
 
  1. packagecom.etc.sax;
  2. importjavax.xml.parsers.SAXParser;
  3. importjavax.xml.parsers.SAXParserFactory;
  4. /**
  5. *
  6. *@authorzhanglj
  7. *
  8. *2012-12-19
  9. */
  10. publicclassTestSAX{
  11. publicstaticvoidmain(String[]args)throwsException{
  12. SAXParserFactoryfactory=SAXParserFactory.newInstance();
  13. SAXParserparser=factory.newSAXParser();
  14. parser.parse("sax_demo.xml",newMySax());
  15. }
  16. }

到这边解析 就完成了,让我们再看一下dom解析 和sax解析 的区别吧,

区别如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读