项目中有一个功能就是xml解析成实体类,有人会吗?最好有代码,万分感谢!!!
Bean类:
public class Student {
private String name;
private int age;
private String sex;
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
田
21
女
雅
22
女
宇
21
男
解析类:
public class Parser {
public static List parser(){
//创建List集合 和 实体类对象
List lists = null;
Student student = null;
try {
//这里的IO流用实际的代替就行,这里只是假的,举个栗子
InputStream is = new InputStream() {
@Override
public int read() throws IOException {
return 0;
}
};
//创建解析器
XmlPullParser xpp = Xml.newPullParser();
//设置编码
xpp.setInput(is, "utf-8");
//获取解析时间的类型
int eventType = xpp.getEventType();
//当文件没有解析到末尾时:
while(eventType != XmlPullParser.END_DOCUMENT){
switch (eventType){
//开始标记
case XmlPullParser.START_TAG:
if("student".equals(xpp.getName())){
lists = new ArrayList<>();
}
if("stu".equals(xpp.getName())){
student = new Student();
}
if("name".equals(xpp.getName())){
student.setName(xpp.nextText());
}
if("age".equals(xpp.getName())){
student.setAge(Integer.valueOf(xpp.nextText()));
}
if("sex".equals(xpp.getName())){
student.setSex(xpp.nextText());
}
break;
//结束标志
case XmlPullParser.END_TAG:
if("stu".equals(xpp.getName())){
lists.add(student);
}
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return lists;
}
}
如果是解析成实体类的话,我想应该是这个
XML上传似乎出了问题...
抱歉,在switch(eventType){} 后面要加 xpp.next(); 我忘了。。。