In Android, the pull parser is used to generate XML files and read XML files.
In Android, the Pull parser 1 is used, and the running mode of the Pull parser is similar to that of the SAX Parser. It provides similar events, such as the start element and end element events. 2. Use parser. next () to enter the next element and trigger the corresponding event. 3. The event is sent as an int value. Therefore, you can use a switch to process the event. 4. When parsing an element, call the parser. nextText () method to obtain the value of the next Text node. 5. Related API: Get the current node event type: parser. getEventType (); get the next node event type: parser. next (); get the tag property value: parser. getAttributeValue (); get the text after the tag: parser. nextText (); example:
Allen
36
James
25
// Use the Pull parser to generate an XML file and write it to the local private void writeXmlToLocal () {List
PersonList = getPersonList (); // get the serialized object XmlSerializer serializer = Xml. newSerializer (); // XmlSerializer serializer = XmlPullParserFactory. newInstance (). newSerializer (); try {File path = new File (Environment. getExternalStorageDirectory (), "persons. xml "); FileOutputStream fos = new FileOutputStream (path); // specify the output location of the serialized object and the encoding serializer. setOutput (fos, "UTF-8"); // Write Start
Serializer. startDocument ("UTF-8", true); serializer. startTag (null, "persons ");//
For (Person person: personList) {// start to write personserializer. startTag (null, "person ");//
Serializer. attribute (null, "id", String. valueOf (person. getId (); // write the nameserializer. startTag (null, "name") of person ");//
Serializer. text (person. getName (); serializer. endTag (null, "name ");//
// Write the person's ageserializer. startTag (null, "age"); // serializer. text (String. valueOf (person. getAge (); serializer. endTag (null, "age ");//Serializer. endTag (null, "person ");//
} Serializer. endTag (null, "persons ");//
Serializer. endDocument (); // end} catch (Exception e) {e. printStackTrace () ;}// use the Pull parser to read the private List of the local XML file
ParserXmlFromLocal () {try {File path = new File (Environment. getExternalStorageDirectory (), "persons. xml "); FileInputStream FCM = new FileInputStream (path); // get the pull parser object XmlPullParser parser = Xml. newPullParser (); // XmlPullParser parser = XmlPullParserFactory. newInstance (). newPullParser (); // specify the parsed file and encoding format parser. setInput (FCM, "UTF-8"); // obtain the event type int eventType = parser. getEventType (); List
PersonList = null; Person person = null; String id; while (eventType! = XmlPullParser. END_DOCUMENT) {// obtain the name of the current node String tagName = parser. getName (); switch (eventType) {case XmlPullParser. START_TAG: // The current value is equal to the Start Node.
If ("persons". equals (tagName )){//
PersonList = new ArrayList
();} Else if ("person". equals (tagName )){//
Person = new Person (); id = parser. getAttributeValue (null, "id"); person. setId (Integer. valueOf (id);} else if ("name ". equals (tagName )){//
Person. setName (parser. nextText ();} else if ("age ". equals (tagName) {// person. setAge (Integer. parseInt (parser. nextText ();} break; case XmlPullParser. END_TAG ://
If ("person ". equals (tagName) {// Add the person object with the set value above to the personList in the set. add (person);} break; default: break;} // obtain the next event type eventType = parser. next ();} return personList;} catch (Exception e) {e. printStackTrace ();} return null ;}}