안 드 로 이 드 가 XML 파일 을 분석 하 는 세 가지 방법의 Pull(읽 기와 쓰기)
4696 단어 android
package cn.itcast.service;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
import cn.itcast.domain.Person;
/**
* Pull XML
*/
public class PULLPersonService {
public static void save(List<Person> persons, Writer writer) throws Throwable{
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", person.getId().toString());
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(person.getAge().toString());
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
writer.flush();
writer.close();
}
public static List<Person> getPersons(InputStream inStream) throws Throwable{
List<Person> persons = null;
Person person = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();//
while(eventType!=XmlPullParser.END_DOCUMENT){//
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
String name = parser.getName();//
if("person".equals(name)){
person = new Person();
person.setId(new Integer(parser.getAttributeValue(0)));
}
if(person!=null){
if("name".equals(name)){
person.setName(parser.nextText());//
}
if("age".equals(name)){
person.setAge(new Short(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if("person".equals(parser.getName())){
persons.add(person);
person = null;
}
break;
}
eventType = parser.next();
}
return persons;
}
}
2:테스트 Pull XML 파일 분석 및 XML 파일 저장
public void testPullGetPersons() throws Throwable{
InputStream inStream = getClass().getClassLoader().getResourceAsStream("itcast.xml");
List<Person> persons = PULLPersonService.getPersons(inStream);
for(Person person : persons){
Log.i(TAG, person.toString());
}
}
public void testSave() throws Throwable{
//File file = new File(this.getContext().getFilesDir(), "person.xml");
//FileOutputStream outStream = new FileOutputStream(file);
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(34, "lili", (short)12));
persons.add(new Person(56, " ", (short)32));
persons.add(new Person(39, " ", (short)40));
/*FileOutputStream outStream = this.getContext().openFileOutput("person.xml", Context.MODE_PRIVATE);
OutputStreamWriter writer = new OutputStreamWriter(outStream, "UTF-8");
BufferedWriter bWriter = new BufferedWriter(writer);
*/
StringWriter writer = new StringWriter();
PULLPersonService.save(persons, writer);
Log.i(TAG, writer.toString());
}
참고 가능:http://www.cnblogs.com/zhangdongzi/archive/2011/04/15/2016828.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.