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"?>,这个怎么办呢?下期解决。
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"?>,这个怎么办呢?下期解决。
相关文章推荐
- android使用pull解析器读写xml文件…
- Android使用Pull解析器解析XML文件
- Android下使用pull解析器生成XML文件、读取XML文件
- 在android中使用Pull解析器生成xml文件
- Android使用Pull解析器解析XML文件
- 在AndroidManifest.xml文件中键盘和自适应的android:windowSoftInputMode属性使用 | keyboard,squeezing,layout
- java学习:使用dom4j读写xml文件
- android使用xml布局文件设计提示对话框
- 使用rapidxml操作xml~读写文件操作
- Android心得3.4--用Pull解析器解析xml文件内容.doc
- android的XML布局文件上使用自定义的类
- android使用xml布局文件设计提示对话框
- 使用Ruby写xml文件 , Ruby xml , Ruby读写xml文件 ,Ruby创建xml文件
- android下pull解析器读取和保存xml文件
- 在AndroidManifest.xml文件中<activity>的android:windowSoftInputMode属性使用
- android_xml解析之 使用PULL读取XML文件 .
- Android中自定义属性的使用------res/values文件下定义一个attrs.xml
- 使用Pull解析器解析XML文件和写XML
- 使用XML读写删除功能来实现资源文件配置
- Android --- 使用SAX读取xml文件