文档库 最新最全的文档下载
当前位置:文档库 › PULL解析技术

PULL解析技术

public class PullPersonService {
---------------读取xml文档的方法-----------------
public static List readXml(InputStream inStream)throws Exception{
Listpersons=null;
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(Listpersons,Writer writer)throws Exception{
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") ;
Listpersons=SAXPersonService.readXml(inStream);
for(Person person:persons){
Log.i(TAG, person.toString());
}
}
//使用dom解析xml
public void testDomReadXml()throws Exception{
InputStream inStream =XmlPersonServiceTest.class.getClassLoader().getResourceAsStream("tyler.xml") ;
Listpersons=DOMPersonService.readXml(inStream);
for(Person person:persons){
Log.i(TAG, person.toString());
}
}

//使用pull解析xml
public

void testPullReadXml()throws Exception{
InputStream inStream =XmlPersonServiceTest.class.getClassLoader().getResourceAsStream("tyler.xml") ;
Listpersons=PullPersonService.readXml(inStream);
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();
Listpersons=new ArrayList();
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());
}

}

相关文档