XML_SAX解析

来源:互联网 发布:五官立体知乎 编辑:程序博客网 时间:2024/06/07 16:17
package com.westos;import java.util.List;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;/* * 处理xml内容的类 */public class MyContentHandler extends DefaultHandler {// javabean集合private List<User> uList;// 前面节点名称:当前characters获取的文本节点归属private String preTag;// 当前Javabeanprivate User user;public MyContentHandler(List<User> uList) {this.uList = uList;}// 标签开始调用的方法@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {preTag = qName;if (qName.equals("user")) {user = new User();user.setId(Integer.valueOf(attributes.getValue("id")));}}// 遇到文本时候调用的方法@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {//组装字符串String str = new String(ch, start, length);if (preTag.equals("name")) {user.setName(str);} else if (preTag.equals("password")) {user.setPassword(str);}}// 标签结束调用的方法@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {if (qName.equals("user")) {uList.add(user);user = null;}preTag = "";//清理标记内容以便characters忽略空格}}public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {SAXParserFactory sf = SAXParserFactory.newInstance();SAXParser parser = sf.newSAXParser();List<User> uList = new ArrayList<>();parser.parse(new File("info.xml"), new MyContentHandler(uList));        System.out.println(uList);}


 
原创粉丝点击