<?xml version="1.0" encoding="utf-8"?> <users> <user name="admin0" age="26">root0</user> <user name="admin1" age="26">root1</user> <user name="admin2" age="26">root2</user> <user name="admin3" age="26">root3</user> </users>放在src/目录下
package com.hualu.androidxml; import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SAXHandler extends DefaultHandler { private List<User> users ; User user ; int i = 1 ; @Override public void startDocument() throws SAXException { users = new ArrayList<User>() ; } @Override public void endDocument() throws SAXException { super.endDocument(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if("user".equals(localName)){ i = 2 ; user = new User() ; user.setName(attributes.getValue("name")) ; user.setAge(attributes.getValue("age")) ; } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("user".equals(localName)){ users.add(user) ; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { if(i == 2) user.setPassword(String.valueOf(ch,start,length)) ; i = 1 ; } public List<User> getUsers() { return users ; } }SAXClient:
package com.hualu.androidxml; import java.io.InputStream; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import android.content.Context; public class SAXClient { public void parserXML(Context context) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); SAXHandler handler = new SAXHandler() ; InputStream file = SAXClient.class.getClassLoader().getResourceAsStream("user.xml"); parser.parse(file, handler) ; List<User> users = handler.getUsers() ; for(User user: users){ System.out.println(user.getName() + " ; " + user.getPassword() + " ; " + user.getAge()); } } catch (Exception e) { } } }具体步骤:
1、实例化一个工厂SAXParserFactory
2、实例化SAXPraser对象,创建XMLReader 解析器
3、实例化Handler,处理器
4、注册解析器
4、读取文件流
5、解析文件
<?xml version="1.0" encoding="utf-8"?> <users> <user name="admin0" age="26">root0</user> <user name="admin1" age="26">root1</user> <user name="admin2" age="26">root2</user> <user name="admin3" age="26">root3</user> </users>放在res/xml目录下。
package com.hualu.androidxml; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.res.XmlResourceParser; public class PullXMLParser { private Activity activity ; public PullXMLParser(Activity activity ){ this.activity = activity; } public List<User> parser(){ List<User> users = new ArrayList<User>() ; XmlResourceParser xrParser = activity.getResources().getXml(R.xml.user); try{ while(xrParser.getEventType() != XmlResourceParser.END_DOCUMENT) { if(xrParser.getEventType() == XmlResourceParser.START_TAG){ String tagName = xrParser.getName() ; if("user".equals(tagName)){ User user = new User() ; user.setName(xrParser.getAttributeValue(null, "name")) ; user.setAge(xrParser.getAttributeValue(null, "age")) ; user.setPassword(xrParser.getText()) ; users.add(user) ; } } xrParser.next() ; }; }catch (Exception e) { } return users ; } }具体步骤:
XmlResourceParser
XmlResourceParser的事件判断,解析XmL
这种方式比SAX简单些(个人认为)。