Java眼中的XML--文件读取--2 应用SAX方式解析XML
1、获取一个SAXParserFactory的实例。2、通过factory获取SAXParser实例。
1 package com.goodboy.saxtest; 2 3 import java.io.IOException; 4 5 import javax.xml.parsers.ParserConfigurationException; 6 import javax.xml.parsers.SAXParser; 7 import javax.xml.parsers.SAXParserFactory; 8 9 import org.xml.sax.SAXException; 10 11 import com.goodboy.SAXParserHandler.SAXParserHandlerTest; 12 13 public class SAXTest { 14 15 public static void main(String[] args) { 16 SAXParserFactory factory = SAXParserFactory.newInstance(); 17 try { 18 SAXParser sax = factory.newSAXParser(); 19 //创建一个SAXParserHandler对象 20 SAXParserHandlerTest handler = new SAXParserHandlerTest(); 21 //作为参数使用 22 sax.parse("books.xml", handler); 23 } catch (ParserConfigurationException e) { 24 // TODO Auto-generated catch block 25 e.printStackTrace(); 26 } catch (SAXException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 } catch (IOException e) { 30 // TODO Auto-generated catch block 31 e.printStackTrace(); 32 } 33 } 34 35 }
SAXTest(main)
1 package com.goodboy.SAXParserHandler; 2 3 import org.xml.sax.Attributes; 4 import org.xml.sax.SAXException; 5 import org.xml.sax.helpers.DefaultHandler; 6 7 public class SAXParserHandlerTest extends DefaultHandler { 8 @Override 9 public void startDocument() throws SAXException { 10 super.startDocument(); 11 System.out.println("解析开始"); 12 } 13 @Override 14 public void startElement(String uri, String localName, String qName, 15 Attributes attributes) throws SAXException { 16 super.startElement(uri, localName, qName, attributes); 17 System.out.println("=====开始访问节点"+qName+"====="); 18 //这里的qName是标签名 19 if (qName.equals("book") ) { 20 System.out.println("属性的个数:"+attributes.getLength()); 21 for (int i = 0; i < attributes.getLength(); i++) { 22 String name = attributes.getQName(i); 23 System.out.println("属性名:"+name); 24 String value = attributes.getValue(i); 25 System.out.println("属性值:"+value); 26 } 27 }else if(!qName.equals("book") && !qName.equals("bookstore") ) { 28 System.out.print("属性名:"+qName); 29 } 30 } 31 @Override 32 public void endElement(String uri, String localName, String qName) 33 throws SAXException { 34 super.endElement(uri, localName, qName); 35 System.out.println("=====结束访问节点"+qName+"====="); 36 } 37 @Override 38 public void endDocument() throws SAXException { 39 super.endDocument(); 40 System.out.println("解析结束"); 41 } 42 @Override 43 public void characters(char[] ch, int start, int length) 44 throws SAXException { 45 super.characters(ch, start, length); 46 String name = new String(ch, start, length); 47 if (!name.trim().equals("")) { 48 System.out.println(" 节点中的内容:"+name); 49 } 50 } 51 }
DefaultHandler对象
最后 使用SAX解析将XML的内容和结构存入JAVA对象
1、建立一个book类:
1 package com.goodboy.SAXParserHandler; 2 3 import java.util.ArrayList; 4 5 import org.xml.sax.Attributes; 6 import org.xml.sax.SAXException; 7 import org.xml.sax.helpers.DefaultHandler; 8 9 import com.goodboy.entity.Book; 10 11 public class SAXParserHandlerTest extends DefaultHandler { 12 Book book = null; 13 String value = null; 14 ArrayList<Book> booklist = new ArrayList<Book>(); 15 public ArrayList<Book> getBooklist() { 16 return booklist; 17 } 18 @Override 19 public void startDocument() throws SAXException { 20 super.startDocument(); 21 System.out.println("解析开始"); 22 } 23 @Override 24 public void startElement(String uri, String localName, String qName, 25 Attributes attributes) throws SAXException { 26 super.startElement(uri, localName, qName, attributes); 27 System.out.println("=====开始访问节点"+qName+"====="); 28 //这里的qName是标签名,也是集合的元素名 29 if (qName.equals("book") ) { 30 book = new Book(); 31 System.out.println("属性的个数:"+attributes.getLength()); 32 for (int i = 0; i < attributes.getLength(); i++) { 33 if(attributes.getQName(i).equals("id")){ 34 book.setId(attributes.getValue(i)); 35 System.out.println("book.getId:"+book.getId()); 36 } 37 } 38 }else if(!qName.equals("book") && !qName.equals("bookstore") ) { 39 System.out.print("属性名:"+qName); 40 } 41 } 42 @Override 43 public void characters(char[] ch, int start, int length) 44 throws SAXException { 45 super.characters(ch, start, length); 46 String name = new String(ch, start, length); 47 if (!name.trim().equals("")) { 48 System.out.println(" 节点中的内容:"+name); 49 value = name; 50 } 51 } 52 @Override 53 public void endElement(String uri, String localName, String qName) 54 throws SAXException { 55 super.endElement(uri, localName, qName); 56 System.out.println("=====结束访问节点"+qName+"====="); 57 if (qName.equals("name")) { 58 book.setName(value); 59 } 60 if (qName.equals("author")) { 61 book.setAuthor(value); 62 } 63 if (qName.equals("year")) { 64 book.setYear(value); 65 } 66 if (qName.equals("prive")) { 67 book.setPrice(value); 68 } 69 if (qName.equals("language")) { 70 book.setLanguage(value); 71 } 72 if (qName.equals("book")) { 73 booklist.add(book); 74 book = null; 75 } 76 value = null; 77 } 78 @Override 79 public void endDocument() throws SAXException { 80 super.endDocument(); 81 System.out.println("book集合的长度"+booklist.size()); 82 System.out.println(booklist.get(0).getName()); 83 System.out.println("解析结束"); 84 } 85 }
转载于:https://www.cnblogs.com/goodboy-heyang/p/4747222.html
Java眼中的XML--文件读取--2 应用SAX方式解析XML相关推荐
- sax dom html解析xml,Python通过DOM和SAX方式解析XML的应用实例分享
XML.DOM 需求 有一个表,里面数据量比较大,每天一更新,其字段可以通过xml配置文件进行配置,即,可能每次建表的字段不一样. 上游跑时会根据配置从源文件中提取,到入库这一步需要根据配置进行建表. ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...
- Android中使用SAX方式解析XML文件
转载http://blog.csdn.net/cjjky/article/details/6666834 在Android中解析XML文主要有三种方式,分别为Simple API for XML(SA ...
- Android网络之数据解析----SAX方式解析XML数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- JavaXml教程(五)使用SAX方式解析XML文件
Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...
- Hello Qt(三十九)——SAX方式解析XML
一.SAX简介 SAX是Simple API for XML的简写,是一种解析XML文件的替代方法,不是由W3C官方所提出的标准,是一种事件驱动的XML API,接近于底层,速度较快,但不便于随机访问 ...
- python解析xml文件选用模块_python-minidom模块【解析xml】
1,xml的文档结构 1.1,XML文档包括XML头信息和XML信息体 1.1.1,XML文档头信息 它表明了此XML文档所用的版本,编码方式.有些复杂的还有一些文档类型的定义(DOCTYPE),用于 ...
- SAX 方式解析 XML
SAXParserFactory factory = SAXParserFactory.newInstance();try {SAXParser parser = factory.newSAXPars ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
最新文章
- 记录某段程序的运行时间
- tomcat 软连接
- p2596 书架(Treap)
- 含最新数据! 使用Python检测新冠肺炎疫情拐点
- Effective C#(二)
- java的归并排序算法_归并排序算法Java实现
- 在微信浏览器中 location.reload() 不刷新解决方案(直接调用方法)
- 男人对待恋爱的不同阶段......
- 福州大学c语言考试答案,C语言练习模拟考福州大学工程技术学院.doc
- linux一切皆是文件_Linux 的虚拟文件系统(真正理解“一切皆文件”)
- 代数学笔记3: 分裂域
- 防止内存泄露 Linux下用Valgrind做检查【ZT】
- git 取消 所有暂存_Git版本管理完全指南—学好Git一文足矣
- 气缸标识上vr什么意思_汽车VR传感器是什么意思?
- 2019.10.15学习总结
- SSM框架-实现Mybatis分页功能-foreknow_cms
- mybatis-plus中的select
- MYSQL误删数据恢复
- PC ACCESS 测试客户机出现错误 win7 64位
- 乡村老师网络计算机培训日志,乡村年轻女教师 “教育日记”火爆网络