JAVA解析XML文件(二)---SAX方式解析
来源:互联网 发布:网络自媒体怎么赚钱 编辑:程序博客网 时间:2024/05/18 11:27
JAVA解析XML文件(二)—SAX方式解析
1.XML文件内容:
<?xml version="1.0" encoding="UTF-8"?><bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治·马丁</author> <year>2015</year> <price>200</price> </book> <book id="2"> <name>光荣与梦想</name> <year>2004</year> <price>150</price> <publish>科学出版社</publish> </book></bookstore>
2.JAVA代码:
(1)新建一个类对Handler方法重写
public class SAXParserHandler extends DefaultHandler { int bookIndex = 0; String value = null; Book book = null; private ArrayList<Book> bookList = new ArrayList<Book>(); public ArrayList<Book> getBookList() { return bookList; } /** * 用来标示解析开始 */ @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); System.out.println("解析开始"); } /** * 用来标示解析结束 */ @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); System.out.println("解析完成"); } /** * 用于遍历xml的开始标签 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); if (qName.equals("book")) { bookList.add(book); book = null; bookIndex++; // 创建一个Book对象,用来接收解析到的元素和节点 book = new Book(); System.out.println("================开始遍历第" + bookIndex + "本书的内容================="); // //已知book标签有有一个属性为id时,调用getValue方法即可 // String value = attributes.getValue("id"); // System.out.println("book标签的属性值为:"+ value); // 不知道book标签的属性及个数时,可通过索引遍历,方法如下 int num = attributes.getLength(); System.out.println("book标签共有" + num + "个属性:"); for (int i = 0; i < num; i++) { // 通过遍历索引来获取属性的名称和值 System.out.print("第" + (i + 1) + "个属性的名称是:" + attributes.getQName(i)); System.out.println("--->它的属性值是:" + attributes.getValue(i)); // 将获取的属性值赋给book对象中的id属性 if (attributes.getQName(i).equals("id")) { book.setId(attributes.getValue(i)); } } } else if (!(qName.equals("book") || qName.equals("bookstore"))) { // 获取节点名 System.out.print("节点名是:" + qName); // 将获取到的节点属性值赋给相应的节点 } } /** * 用于遍历xml的结束标签 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); if (qName.equals("book")) { book = null; System.out.println("================结束遍历第" + bookIndex + "本书的内容================="); } else if (qName.equals("")) { System.out.println("出错了,写的什么屎玩意儿!!!"); } else if (qName.equals("name")) { book.setName(value); // System.out.println("名称已写入"+book.getName()); } else if (qName.equals("author")) { book.setAuthor(value); } else if (qName.equals("year")) { book.setYear(value); } else if (qName.equals("price")) { book.setPrice(value); } else if (qName.equals("publish")) { book.setPublish(value); } } /** * 用于获取节点的值 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub super.characters(ch, start, length); // 获取节点值 value = new String(ch, start, length); if (!value.trim().equals("")) { System.out.println("--->它的值是:" + value); } }
(2)新建SAX解析方法进行解析
public ArrayList<Book> SAXParseXML() { // 通过SAXParserFactory的newInstance方法创建一个实例 SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParserHandler handler = null; try { // 通过factory的newSAXParser方法创建一个SAXParser实例 SAXParser parser = factory.newSAXParser(); // 创建一个SAXParserHandler对象,SAXParserHandler类继承自DefaultHandler,里边重载了一些方法 handler = new SAXParserHandler(); // 通过parser的parse方法解析目标xml文件 parser.parse("MyXML.xml", handler); return handler.getBookList(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return handler.getBookList(); }
(3)main()方法调用
public static void main(String[] args) { SAXTest st = new SAXTest(); st.SAXParseXML(); }
0 0
- JAVA解析XML文件(二)---SAX方式解析
- Java之xml文件解析二(SAX方式解析xml文件)
- 存储方式二:文件(XML SAX解析)
- JAVA SAX 方式解析XML文件
- JAVA SAX 方式解析XML文件
- JAVA解析XML文件--SAX方式
- XML文件解析(SAX方式)
- XML文件解析(SAX方式)
- SAX方式解析XML文件
- android sax解析xml文件(二)
- 解析XML文件(SAX方式解析XML)
- java解析xml(sax方式)
- xml文件--SAX方式解析xml文件
- XML学习05-Java中SAX方式解析XML文件
- java SAX解析XML文件
- Java Sax解析xml文件
- Java Sax解析XML文件
- Java Sax解析xml文件
- 瑞银资产管理在中国推出 QDLP 业务
- 大话技术流总结厉害杀塔技巧
- 利用Safari打开一个链接
- Linux CAN编程详解
- Spring MVC 入参支持数组
- JAVA解析XML文件(二)---SAX方式解析
- wamp环境PHP安装mongodb扩展
- 抛砖引玉:新大话2儿女养成之后之童工篇
- 对于更新xcode7后模拟器上下出现黑边等三个问题及解决方案(任超)
- 使用Spring Roo构建项目
- 利用UIWebView显示pdf文件,网页等等
- java数据封装
- Android平台关于时间和日期的相关类和方法(Date/Time)
- 富文本之某些字体之间的间距特殊调整