public class PullPersonService {
---------------读取xml文档的方法-----------------
public static List
List
Person person=null;
XmlPullParser parser=Xml.newPullParser();
parser.setInput(inStream,"UTF-8");
int eventCode=parser.getEventType();//返回一个事件码
while(eventCode!=XmlPullParser.END_DOCUMENT){
switch(eventCode){
case XmlPullParser.START_DOCUMENT:
persons=new ArrayList
break;
case XmlPullParser.START_TAG:
if("person".equals(parser.getName())){
person=new Person();
person.setId(new Integer(parser.getAttributeValue(0)));
}else if(person!=null){
if("name".equals(parser.getName())){
person.setName(parser.nextText());
}else if("age".equals(parser.getName())){
person.setAge(new Short(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if("person".equals(parser.getName())&&person!=null){
persons.add(person);
}
break;
}
eventCode=parser.next();
}
return persons;
}
----------------------------使用pull技术将文件保存为xml------------------------
public static void WriteXml(List
XmlSerializer serializer=Xml.newSerializer();
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for(Person person:persons){
serializer.startTag(null, "person");
serializer.attribute(null, "id", String.valueOf(person.getId()));
serializer.startTag(null, "name");
serializer.attribute(null, "name", person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.attribute(null, "age", String.valueOf(person.getAge()));
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
writer.flush();
writer.close();
}
}
--------------------------测试类-----------------------
public class XmlPersonServiceTest extends AndroidTestCase {
private static final String TAG="XmlPersonServiceTest";
//使用SAX解析xml内容
public void testSAXReadXml()throws Exception{
InputStream inStream =XmlPersonServiceTest.class.getClassLoader().getResourceAsStream("tyler.xml") ;
List
for(Person person:persons){
Log.i(TAG, person.toString());
}
}
//使用dom解析xml
public void testDomReadXml()throws Exception{
InputStream inStream =XmlPersonServiceTest.class.getClassLoader().getResourceAsStream("tyler.xml") ;
List
for(Person person:persons){
Log.i(TAG, person.toString());
}
}
//使用pull解析xml
public
void testPullReadXml()throws Exception{
InputStream inStream =XmlPersonServiceTest.class.getClassLoader().getResourceAsStream("tyler.xml") ;
List
for(Person person:persons){
Log.i(TAG, person.toString());
}
}
//使用pull保存xml
public void testPullWrileXml()throws Exception{
// FileOutputStream outStream=this.getContext().openFileOutput("person.xml", Context.MODE_WORLD_READABLE);
//OutputStreamWriter writer=new OutputStreamWriter(outStream, "UTF-8");
//BufferedWriter buffrewriter=new BufferedWriter( writer);//作用是:缓存
StringWriter writer=new StringWriter();
List
persons.add(new Person(12,"lingming",new Short((short)36)));
persons.add(new Person(12,"laozhang",new Short((short)23)));
persons.add(new Person(12,"leixin",new Short((short)45)));
PullPersonService.WriteXml(persons, writer);
Log.i(TAG, writer.toString());
}
}