Mega Code Archive

 
Categories / Android / Development
 

Using XML Parser

package app.test; import java.io.ByteArrayInputStream; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class Test extends Activity {   XMLUser aUser;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     String xml = "<?xml version=\"1.0\"?>\n" + "<user>\n"         + "<user-id>1</user-id>\n" + "<username>a</username>\n"         + "<firstname>B</firstname>\n"         + "<lastname>C</lastname>\n" + "</user>\n";     SAXParserFactory aSAXParserFactory = SAXParserFactory.newInstance();     try {       SAXParser aSAXParser = aSAXParserFactory.newSAXParser();       XMLReader anXMLReader = aSAXParser.getXMLReader();       UserXMLHandler aUserXMLHandler = new UserXMLHandler();       anXMLReader.setContentHandler(aUserXMLHandler);       anXMLReader.parse(new InputSource(new ByteArrayInputStream(xml.getBytes())));     } catch (Exception e) {       e.printStackTrace();     }   }   class UserXMLHandler extends DefaultHandler {     static final int NONE = 0;     static final int ID = 1;     static final int FIRSTNAME = 2;     static final int LASTNAME = 3;     int state = NONE;     static final String ID_ELEMENT = "user-id";     static final String FIRSTNAME_ELEMENT = "firstname";     static final String LASTNAME_ELEMENT = "lsatname";     @Override     public void startDocument() throws SAXException {       Log.v("SimpleXMLParser", "startDocument");       aUser = new XMLUser();     }     @Override     public void endDocument() throws SAXException {       Log.v("SimpleXMLParser", "endDocument");       Log.v("SimpleXMLParser", "User Info: " + aUser.user_id + " "           + aUser.firstname + " " + aUser.lastname);     }     @Override     public void startElement(String uri, String localName, String qName,         Attributes attributes) throws SAXException {       Log.v("SimpleXMLParser", "startElement");       if (localName.equalsIgnoreCase(ID_ELEMENT)) {         state = ID;       } else if (localName.equalsIgnoreCase(FIRSTNAME_ELEMENT)) {         state = FIRSTNAME;       } else if (localName.equalsIgnoreCase(LASTNAME_ELEMENT)) {         state = LASTNAME;       } else {         state = NONE;       }     }     @Override     public void endElement(String uri, String localName, String qName)         throws SAXException {       Log.v("SimpleXMLParser", "endElement");     }     @Override     public void characters(char[] ch, int start, int length)         throws SAXException {       String stringChars = new String(ch, start, length);       if (state == ID) {         aUser.user_id += stringChars.trim();         Log.v("SimpleXMLParser", "user_id:" + aUser.user_id);       } else if (state == FIRSTNAME) {         aUser.firstname += stringChars.trim();         Log.v("SimpleXMLParser", "firstname:" + aUser.firstname);       } else if (state == LASTNAME) {         aUser.lastname += stringChars.trim();         Log.v("SimpleXMLParser", "lastname:" + aUser.lastname);       }     }   } } class XMLUser {   String user_id;   String firstname;   String lastname;   public XMLUser() {     user_id = "";     firstname = "";     lastname = "";   } }