/** * Created by 123 on 2018/2/24. * * 使用SAX解析XML */ public class SAX extends DefaultHandler { private static final String TAG = "SAX"; private String nodeName; private StringBuilder id; private StringBuilder name; private StringBuilder version; //开始解析xml的时候调用 @Override public void startDocument() throws SAXException { id=new StringBuilder(); name=new StringBuilder(); version=new StringBuilder(); } //开始解析某个节点的时候调用 @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { nodeName=localName;//记录当前节点名 } //获取节点内容时候调用 @Override public void characters(char[] ch, int start, int length) throws SAXException { //根据当前的节点名称判断将内容添加到拿一个StringBuilder之中 if("id".equals(nodeName)){ id.append(ch,start,length); }else if("name".equals(nodeName)){ name.append(ch,start,length); }else if("version".equals(nodeName)){ version.append(ch,start,length); } } //完成解析某个节点时候调用 @Override public void endElement(String uri, String localName, String qName) throws SAXException { if("app".equals("localName")){ Log.d(TAG, "id:"+id.toString().trim()); Log.d(TAG, "name:"+name.toString().trim()); Log.d(TAG, "version:"+version.toString().trim()); //最后清空StringBuilder id.setLength(0); name.setLength(0); version.setLength(0); } } //完成整个xml解析的时候调用 @Override public void endDocument() throws SAXException { super.endDocument(); } /** * 调用这个类解析xml文件 * */ private void parseXMLWithSAX(String xmlData){ try{ SAXParserFactory factory=SAXParserFactory.newInstance(); XMLReader xmlReader=factory.newSAXParser().getXMLReader(); //实例设置到XMLReader中 SAX sax=new SAX(); xmlReader.setContentHandler(sax); //开始执行解析 xmlReader.parse(new InputSource(new StringReader(xmlData))); }catch (Exception e){ } } }
【Android 学习记录】SAX解析xml文件
最新推荐文章于 2023-02-09 15:49:09 发布