android使用pull解析器讀寫xml文件…
public class CreatexmlActivity extends Activity {
Button btn1;
// OnClickListener ocl1;
@Override
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1=(Button)findViewById(R.id.button1);
btn1.setOnClickListener(ocl1);
}
public OnClickListener ocl1=new
OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
List<Person> list1=new
ArrayList<Person>();
Person p1=new Person("shouji",12);
p1.setId(0);
list1.add(p1);
Person p2=new Person("dianhua",22);
p2.setId(new Integer(1));
list1.add(p2);
try {
saveAllByXmlSerializer(list1,new FileOutputStream(new
File("/sdcard/data","b.xml")));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
List<Person> list2;
try {
list2 = findAll(new FileInputStream(new
File("/sdcard/data","b.xml")));
for(int i=0;i<list2.size();i++)
Toast.makeText(getApplicationContext(),list2.get(i).getName(),Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
public List<Person>
findAll(InputStream in) throws Exception {
//
獲取Pull解析器
XmlPullParser parser =
Xml.newPullParser();
//
解析器加載輸入流
parser.setInput(in,
"UTF-8");
List<Person> list = new
ArrayList<Person>();
Person user =
null;
for (int event =
parser.getEventType(); event != XmlPullParser.END_DOCUMENT; event =
parser.next())
switch (event) {
case
XmlPullParser.START_TAG:
if
("person".equals(parser.getName())) {
user = new Person();
String id =
parser.getAttributeValue(0);
user.setId(new
Integer(id));
list.add(user);
} else if
("name".equals(parser.getName())) {
String name =
parser.nextText();
user.setName(name);
} else if
("age".equals(parser.getName())) {
String age =
parser.nextText();
user.setAge(new
Integer(age));
}
}
return
list;
}
public void
saveAllByXmlSerializer(List<Person>
users, OutputStream out) throws IOException
{
XmlSerializer serializer
= Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for (Person user :
users) {
serializer.startTag(null,
"person");
serializer.attribute(null, "id",
user.getId().toString());
serializer.startTag(null,
"name");
serializer.text(user.getName());
serializer.endTag(null,
"name");
serializer.startTag(null,
"age");
serializer.text(String.valueOf(user.getAge()));
serializer.endTag(null,
"age");
serializer.endTag(null,
"person");
}
serializer.endTag(null,
"persons");
serializer.endDocument();
}
public class Person {
private Integer id;
private String name;
private int age;
public Person ()
{}
public Person (String
name ,int age)
{
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void
setId(Integer id) {
this.id = id;
}
public String getName()
{
return name;
}
public void
setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int
age) {
this.age = age;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
return this.id+",name
"+this.name+" age
"+this.age+"\n";
}
}
}
創建的xml文件如下:
<?xml version='1.0' encoding='UTF-8'
standalone='yes'
?><persons><person
id="0"><name>shouji</name><age>12</age></person><person
id="1"><name>dianhua</name><age>22</age></person></persons>
大家會發現這個xml文件和我們平常使用的xml文件有所差別,請仔細看!
發現沒有,<?xml version='1.0'
encoding='UTF-8' standalone='yes'
?>這個中間的是單引號,而我們平常使用的是雙引號<?xml
version="1.0"
encoding="utf-8"?>,這個怎麼辦呢?下期解決。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.