您的位置:首页 > 移动开发 > Android开发

android使用pull解析器读写xml文件…

2014-09-25 13:29 337 查看
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"?>,这个怎么办呢?下期解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: