简单的一个小程序。
Java解析xml文件,先导入dom4j-1.6.1.jar包。
<?xml version="1.0" encoding="UTF-8"?>
<school>
<class text="三国演义">
<stu>
<name>刘备</name>
<gender>男</gender>
<age>55</age>
</stu>
<stu>
<name>诸葛亮</name>
<gender>男</gender>
<age>46</age>
</stu>
<stu>
<name>小乔</name>
<gender>女</gender>
<age>8</age>
</stu>
</class>
<class text="西游记">
<stu>
<name>孙悟空</name>
<gender>男</gender>
<age>550</age>
</stu>
<stu>
<name>唐僧</name>
<gender>男</gender>
<age>35</age>
</stu>
<stu>
<name>白骨精</name>
<gender>女</gender>
<age>200</age>
</stu>
</class>
<class text="水浒传">
<stu>
<name>宋江</name>
<gender>男</gender>
<age>48</age>
</stu>
<stu>
<name>武松</name>
<gender>男</gender>
<age>39</age>
</stu>
<stu>
<name>孙二娘</name>
<gender>女</gender>
<age>35</age>
</stu>
</class>
</school>
******************************************************************************
public class XmlWork {
public List<Stu> getStusAndBook() {
try {
// 实例化XML解析器
SAXReader saxReader = new SAXReader();
// 获得xml文件对象
File file = new File("myxml.xml");
// 解析器读取XML文件返回解析后的文档(doc)
Document doc = saxReader.read(file);
// 获得XML文档的根节点
Element els = doc.getRootElement();
// 根节点通过elements()方法,获得子节点的集合
List<Element> classs = els.elements();
List<Stu> list = new ArrayList<Stu>();
for (Element el : classs) {
// Book b=new Book();
// b.setName(el.attributeValue("text"));
Book b = new Book(el.attributeValue("text"));
// 获得class标签里stu标签的集合
List<Element> stus = el.elements();
for (Element ee : stus) {
// 获得name标签里的文本
String name = ee.elementText("name");
// 获得gender标签里的文本
String gender = ee.elementText("gender");
// 获得age标签里的文本
int age = Integer.parseInt(ee.elementText("age"));
Stu s = new Stu(name, gender, age, b);
list.add(s);
}
}
return list;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public List<Stu> getStus() {
try {
// 实例化XML解析器
SAXReader saxReader = new SAXReader();
// 获得xml文件对象
File file = new File("myxml.xml");
// 解析器读取XML文件返回解析后的文档(doc)
Document doc = saxReader.read(file);
// 获得XML文档的根节点
Element els = doc.getRootElement();
// 根节点通过elements()方法,获得子节点的集合
List<Element> classs = els.elements();
List<Stu> list = new ArrayList<Stu>();
// 遍历根节点里的子元素集合
for (Element el : classs) {
// 获得name标签里的文本
String name = el.elementText("name");
// 获得gender标签里的文本
String gender = el.elementText("gender");
// 获得age标签里的文本
int age = Integer.parseInt(el.elementText("age"));
Stu s = new Stu(name, gender, age);
list.add(s);
}
return list;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
************************************************************************************
public class Test {
<span style="white-space:pre"> </span>public static void main(String[] args) {
<span style="white-space:pre"> </span>XmlWork xw = new XmlWork();
<span style="white-space:pre"> </span>List<Stu> list = xw.getStusAndBook();
<span style="white-space:pre"> </span>for (Stu stu : list) {
<span style="white-space:pre"> </span>System.out.println(stu.getName() + "\t" + stu.getGender() + "\t"
<span style="white-space:pre"> </span>+ stu.getAge() + "\t" + stu.getBook().getName());
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
}
************************************************************************************
public class Book {
private String name;
public Book() {
// TODO Auto-generated constructor stub
}
public Book(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
************************************************************************************
public class Stu {
<span style="white-space:pre"> </span>private String name;
<span style="white-space:pre"> </span>private String gender;
<span style="white-space:pre"> </span>private int age;
<span style="white-space:pre"> </span>private Book book = new Book();
<span style="white-space:pre"> </span>public Stu() {
<span style="white-space:pre"> </span>// TODO Auto-generated constructor stub
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public Stu(String name, String gender, int age) {
<span style="white-space:pre"> </span>super();
<span style="white-space:pre"> </span>this.name = name;
<span style="white-space:pre"> </span>this.gender = gender;
<span style="white-space:pre"> </span>this.age = age;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public Stu(String name, String gender, int age, Book book) {
<span style="white-space:pre"> </span>super();
<span style="white-space:pre"> </span>this.name = name;
<span style="white-space:pre"> </span>this.gender = gender;
<span style="white-space:pre"> </span>this.age = age;
<span style="white-space:pre"> </span>this.book = book;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public String getName() {
<span style="white-space:pre"> </span>return name;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public void setName(String name) {
<span style="white-space:pre"> </span>this.name = name;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public String getGender() {
<span style="white-space:pre"> </span>return gender;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public void setGender(String gender) {
<span style="white-space:pre"> </span>this.gender = gender;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public int getAge() {
<span style="white-space:pre"> </span>return age;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public void setAge(int age) {
<span style="white-space:pre"> </span>this.age = age;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public Book getBook() {
<span style="white-space:pre"> </span>return book;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>public void setBook(Book book) {
<span style="white-space:pre"> </span>this.book = book;
<span style="white-space:pre"> </span>}
}