public class SAXTestXml { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { // 得到解析工廠 SAXParserFactory factory = SAXParserFactory.newInstance(); // 從解析工廠獲取解析器 SAXParser parser = factory.newSAXParser(); // 編寫處理器 加載文檔 Document 註冊處理器 PHandler handler = new PHandler(); // 解析 parser.parse(Thread.currentThread().getContextClassLoader().getResourceAsStream("com/temp/sax_xml/person.xml"), handler); List<Person> persons = handler.getPersons(); System.out.println(persons.size()); for (Person person : persons) { System.out.println(person); } } } class PHandler extends DefaultHandler { private List<Person> persons; private Person person; private String elementName; public List<Person> getPersons(){ return this.persons; } @Override public void startDocument() throws SAXException { persons = new ArrayList<>(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (null!=qName) { elementName = qName; if ("person".equals(qName)) { person=new Person(); if (null!=attributes) { person.setId(attributes.getValue("id")); } } } } @Override public void characters(char[] ch, int start, int length) throws SAXException { String contents = new String(ch, start, length); if (null!=contents&&!contents.isEmpty()) { contents = contents.trim(); if ("name".equals(elementName)) { person.setName(contents); }else if("age".equals(elementName)) { if (contents.length()>0) { person.setAge(Integer.valueOf(contents)); } } } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if ("person".equals(qName)) { persons.add(person); } elementName = null; } @Override public void endDocument() throws SAXException { } } class Person{ private String name; private int age; private String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", id=" + id + "]"; } }
xmljava
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="2212312313"> <name>曉明</name> <age>100</age> </person> <person id="8776856786"> <name>晴雪</name> <age>22</age> </person> </persons>
結果ide
2this
Person [name=曉明, age=100, id=2212312313]xml
Person [name=晴雪, age=22, id=8776856786]element