package com.example.saxdemo; public class LinkMan { private String name; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
MySAX.java
package com.example.saxdemo; 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 MySAX extends DefaultHandler { private List<LinkMan> all=null; private LinkMan man=null; private String curElement=null; @Override public void startDocument() throws SAXException { all=new ArrayList<LinkMan>(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(localName.equals("linkman")){ man=new LinkMan(); } curElement=localName; } @Override public void characters(char[] ch, int start, int length) throws SAXException { if(man!=null){ if(curElement.equals("name")){ man.setName(new String(ch, start, length)); } if(curElement.equals("email")){ man.setEmail(new String(ch, start, length)); } } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if(localName.equals("linkman")){ all.add(man); man=null; } curElement=null; } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); } public List<LinkMan> getAll() { return all; } }
MainActivity.java
package com.example.saxdemo; import java.io.File; import java.io.IOException; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private TextView name=null; private TextView email=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); name=(TextView)findViewById(R.id.name); email=(TextView)findViewById(R.id.email); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File file=new File(Environment.getExternalStorageDirectory()+File.separator+"files/addresslist.xml"); if(!file.exists()){//文件不存在 return; } SAXParserFactory factory=SAXParserFactory.newInstance(); SAXParser parser=null; try { parser=factory.newSAXParser(); } catch (ParserConfigurationException | SAXException e) { e.printStackTrace(); } MySAX mySAX=new MySAX(); try { parser.parse(file, mySAX); } catch (SAXException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } List<LinkMan> all=mySAX.getAll(); name.setText(all.get(0).getName()); email.setText(all.get(0).getEmail()); }else{ Toast.makeText(this, "没有sdcard", Toast.LENGTH_LONG).show(); } } }