Android数据篇-SAX解析XML
作为三大解析XML方式之一,这里介绍的是SAX解析:
第一步:
try { //创建一个解析器的工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); XMLReader xmlReader = factory.newSAXParser().getXMLReader(); //为XMLReader设置内容处理器 xmlReader.setContentHandler(new MyContentHandler()); xmlReader.parse(new InputSource(new StringReader(str))); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
第二步:
public class MyContentHandler extends DefaultHandler{ private String tagName;//标示 private String hisName,address,sex,status,money; @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub if(tagName.equals("name")){ hisName = new String(ch,start,length); }else if(tagName.equals("sex")){ sex = new String(ch, start, length); }else if(tagName.equals("status")){ status = new String(ch, start, length); }else if(tagName.equals("address")){ address = new String(ch, start, length); }else if(tagName.equals("money")){ money = new String(ch, start, length); } } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub Log.i("+++","end"); super.endDocument(); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub if(localName.equals("worker")){ //解析结束 打印出相关字段 printOut(); } super.endElement(uri, localName, qName); } @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub Log.i("+++", "start"); super.startDocument(); } /** * @param uri 当前标签的命名空间 * @param localName 不带前缀 * @param qName 带前缀 * @param attributes 标签的所有属性 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub tagName = localName; if(localName.equals("worker")){ for(int i=0;i<attributes.getLength();i++){ System.out.print(attributes.getLocalName(i)+"="+attributes.getValue(i)); } } super.startElement(uri, localName, qName, attributes); } private void printOut(){ Log.i("json", "name: " + hisName); Log.i("json", "sex= " + sex); Log.i("json", "address: " + address); Log.i("json", "status= " + status); Log.i("json", "money= " + money); }