在java中解析xml语言有两种方法,这里我们采用pull解析方法
比如我们要解析Student.xml文件格式
编写xml格式文件
<?xml version="1.0" encoding="utf-8" ?>
<Person>
<student id="1">
<name>张三</name>
<sex>男</sex>
<age>18</age>
</student>
<student id="2">
<name>李四</name>
<sex>男</sex>
<age>18</age>
</student>
<student id="3">
<name>小红</name>
<sex>女</sex>
<age>18</age>
</student>
</Person>
接着我们要解析这个文件,我们这里采用集合来解析
先创建一个Person类
public class Person {
private int id;
private String name;
private String sex;
private int age;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(int id, String name, String sex, int age) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", sex=" + sex
+ ", age=" + age + "]";
}
}
创建完类,我们再来使用pull来解析
public class XmlPullDome1 {
public static void main(String[] args) {
try {
//创建一个解析工厂
XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
//利用解析工厂创建解析器
XmlPullParser parser=factory.newPullParser();
//利用解析器获取解析xml文件
parser.setInput(new FileInputStream("src/Person.xml"), "utf-8");
//获取事件类型
int type=parser.getEventType();
List<Person> list=new ArrayList<Person>();//创建集合
Person person = null;
while(type!=XmlPullParser.END_DOCUMENT){//判断文件的不是结束语句
switch (type) {
case XmlPullParser.START_TAG://当等于开始文档时
if("student".equals(parser.getName())){//判断student相等时
person=new Person();
person.setId(Integer.parseInt(parser.getAttributeValue(null, "id")));
}else if("name".equals(parser.getName())){//判断name相等时
person.setName(parser.nextText());
}else if("sex".equals(parser.getName())){//判断sex相等时
person.setSex(parser.nextText());
}else if("age".equals(parser.getName())){//判断age相等时
person.setAge(Integer.parseInt(parser.nextText()));
}
break;
case XmlPullParser.END_TAG://结束文档时
if("student".equals(parser.getName())){
list.add(person);
person=null;
}
default:
break;
}
type=parser.next();
}
for(Person p:list){//遍历输出
System.out.println(p.getId()+"--"+p.getName()+"---"+p.getSex()+"--"+p.getAge());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
一个完整的编码就解析完了!