SAX:Simple API for XML

  • 基于事件的API

  1. import javax.xml.parsers.SAXParser;
  2. import javax.xml.parsers.SAXParserFactory;
  3. public class SAXSample {
  4. static final String XML_URL = "http://rss.sina.com.cn/tech/internet/home28.xml";
  5. public static void main(String[] args) throws Exception{
  6. SAXParserFactory spf = SAXParserFactory.newInstance();
  7. SAXParser sp = spf.newSAXParser();
  8. sp.parse(XML_URL,new MyHandle());
  9. }
  10. }
  11. import org.xml.sax.Attributes;
  12. import org.xml.sax.SAXException;
  13. import org.xml.sax.SAXParseException;
  14. import org.xml.sax.helpers.DefaultHandler;
  15. public class MyHandle extends DefaultHandler {
  16. void print(Object... objs){
  17. for(Object obj:objs){
  18. System.out.print(obj);
  19. System.out.print(" ");
  20. }
  21. System.out.println();
  22. }
  23. @Override
  24. public void startDocument() throws SAXException{ //开始解析文档时,就会触发startDocument事件
  25. print("start Document");
  26. }
  27. @Override
  28. public void endDocument() throws SAXException{ //解析结束时,会触发endDocument事件
  29. print("end Document");
  30. }
  31. @Override
  32. public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{ //如果遇到一个XML元素,会触发startElement事件
  33. print("start Element:",localName,qName);
  34. }
  35. @Override
  36. public void endElement(String uri,String localName,String qName) throws SAXException{ //元素结束时,会触发endElement事件
  37. print("end Element:",localName,qName);
  38. }
  39. @Override
  40. public void characters(char[] ch,int start,int length) throws SAXException{ //遇到文本,会触发characters事件
  41. print("characters:",new String(ch,start,length));
  42. }
  43. @Override
  44. public void error(SAXParseException e) throws SAXException{ //遇到错误,会触发error事件
  45. print("error:",e);
  46. }
  47. }

总结:

SAX解析XML

  • 一种流式解析XML的API
  • 通过事件触发,速度快
  • 调用方式通过回调获得数据

廖雪峰Java14Java操作XML和JSON-1XML-3SAX的更多相关文章

  1. 廖雪峰Java14Java操作XML和JSON-2JSON-2处理JSON

    解析JSON JSR 353 API 常用的第三方库 * Jackson * gson * fastjson Jackson: 提供了读写JSON的API JSON和JavaBean可以互相转换 可食 ...

  2. 廖雪峰Java14Java操作XML和JSON-2JSON-1Json介绍

    JSON是一种类似JavaScript对象的数据表示格式 JavaScript Object Notation 去除了JavaScript的执行语句 仅保留数据 JSON格式: 仅保留UTF-8编码 ...

  3. 廖雪峰Java14Java操作XML和JSON-1XML-1XML介绍

    1.XML:可扩展标记语言(extensible Markup Language) 是一种数据表示格式 可以描述非常复杂的数据结构 用于存储和传输数据 1.1XML特点: 1.纯文本,默认utf-8编 ...

  4. 廖雪峰Java14Java操作XML和JSON-1XML-4第三方XML库

    总结: 使用Jackson可以快速在XML和JavaBean之间互相转换 可使用Annotation定制序列化和反序列化

  5. 廖雪峰Java14Java操作XML和JSON-1XML-2DOM

    XML是一种数据表示形式. 可以描述非常复杂的数据数据结构 用于传输和传输数据 DOM:Document Object Model DOM模型就是把XML文档作为一个树形结构,从根结点开始,每个节点都 ...

  6. 廖雪峰js教程笔记9 json

    JSON是JavaScript Object Notation的缩写,它是一种数据交换格式. 在JSON出现之前,大家一直用XML来传递数据.因为XML是一种纯文本格式,所以它适合在网络上交换数据.X ...

  7. PHP7语法知识(四):目录文件操作、Cookie与Session、MySQL数据库的使用、Redis数据库、PHP处理XML与JSON

    目录文件操作 一.目录 1.判断文件类型: 2.创建和删除目录: 3.打开读取和关闭目录 4.获得路径中目录部分 5.目录磁盘空间 二.文件操作 1.打开文件: 2.读取文件: 3.获得文件属性: 4 ...

  8. 转 廖雪峰 urllib

    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432688314740a0 ...

  9. 【.net 深呼吸】聊聊WCF服务返回XML或JSON格式数据

    有时候,为了让数据可以“跨国经营”,尤其是HTTP Web有关的东东,会将数据内容以 XML 或 JSON 的格式返回,这样一来,不管客户端平台是四大文明古国,还是处于蒙昧时代的原始部落,都可以使用这 ...

随机推荐

  1. SetFileAttributes

    设置文件属性: SetFileAttributes(文件名, 属性值) 读取文件属性:GetFileAttributes(文件名); 读取文件属性 SetFileAttributes(文件名, FIL ...

  2. Java-Class-C:org.springframework.http.HttpEntity

    ylbtech-Java-Class-C:org.springframework.http.HttpEntity 1.返回顶部 1.1. import org.springframework.http ...

  3. 使用Docker创建数据容器

    使用Docker创建数据容器 翻译自: Data-only container madness 1.什么是数据容器? 数据容器就是本身只创建一个volume供其他容器共享,创建完后即退出,不执行任何任 ...

  4. 由于某些原因无法博客搬家,现在换马甲了 http://blog.csdn.net/qq_32066409

    由于位置原因无法博客搬家,现在换马甲到csdn了地址如下http://blog.csdn.net/qq_32066409

  5. ssrf对redis未授权访问写webshell

    docker建立redis镜像 docker run -d -p 9999:6379 redis 将redis的6379端口映射到物理机的9999端口 使用工具生成攻击代码 攻击 进入容器查看

  6. spark-sql性能优化之——多线程实现多Job并发执行

    直接上代码 val spark = SparkSession.builder() .appName("name") .master("local[2]") .g ...

  7. Python匹马行天下之初识python!

    python的发展史 1989年,被称为龟叔的Guido在为ABC语言写插件时,产生了写一个简洁又实用的编程语言的想法,并开始着手编写.因为其喜欢Monty Python喜剧团,所以将其命名为pyth ...

  8. 幂等 zuul的Filter实现

    通过zuul的过滤器 filter实现 //app 幂等过滤 @SuppressWarnings("all") @Order(Ordered.HIGHEST_PRECEDENCE) ...

  9. luoguP1062 数列 [数学]

    题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是 ...

  10. hive 总结二

    本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 查询函数(Hive高级) NVL(cloumn,replace_with) 如果cloumn为NU ...