SAX-xml解析
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>冰与火之歌</name>
<author>乔治马丁</author>
</book>
<book id="2">
<name>安徒生童话</name>
<author>2004</author>
</book>
</bookstore>
package com.xml; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * SAX 包来解析xml simple apis for xml */ public class demo01 { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); MyHandle myHandle = new MyHandle(); saxParser.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("com/xml/index.xml"), myHandle); List<User> users = myHandle.getUsers(); for (User item : users) { System.out.println(item.getName() + "----------------" + item.getAuthor()); } } } class MyHandle extends DefaultHandler { private List<User> users = new ArrayList<>(); private String tag; private User user; public MyHandle() { super(); } @Override public void startDocument() throws SAXException { super.startDocument(); } @Override public void endDocument() throws SAXException { super.endDocument(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if (null != qName) { tag = qName; } if (null != qName && qName.equals("book")) { this.user = new User(); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); if (null != qName && qName.equals("book")) { if (null != user) { this.users.add(this.user); } } this.tag = null; } public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String line = new String(ch, start, length).trim(); // 如果是名字标签 if (null != tag && tag.equals("name")) { user.setName(line); } else if (null != tag && tag.equals("author")) { user.setAuthor(line); } } }
package com.xml; public class User { private String name; private String author; public static void main(String[] args){ } public User() { } public User(String name, String author) { this.name = name; this.author = author; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
走过的坑,没有实例化范型类
技术改变一切