Java 库提供了两种XML解析器,其中一种是DOM(Document Object Model).
示例如下:
package com.xml;
import java.io.File;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DOMTest {
public static void main(String[] args) {
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=null;
try {
builder = factory.newDocumentBuilder();
Document doc=builder.parse(new File("\\students.xml"));
Element root=doc.getDocumentElement();
String rootName=root.getTagName();
if(rootName!=null&&rootName.trim().equals("students")){
System.out.println(root.getAttribute("description"));
System.out.println("for each students....");
ArrayList<Student> result=new ArrayList<Student>();
NodeList nodeList=root.getElementsByTagName("student");
if(nodeList!=null){
for(int i=0;i<nodeList.getLength();i++){
Node current=nodeList.item(i);
//System.out.println(current.getNodeName());
if(current.getNodeName().trim().equals("student")){
Student student=new Student();
for(int k=0;k<current.getChildNodes().getLength();k++){
String attribute=current.getChildNodes().item(k).getNodeName();
if(attribute.equals("id")){
String id=current.getChildNodes().item(k).getTextContent();
student.setStuId(id);
}
if(attribute.equals("name")){
String name=current.getChildNodes().item(k).getTextContent();
student.setStuName(name);
}
if(attribute.equals("age")){
String age=current.getChildNodes().item(k).getTextContent();
student.setStuAge(Integer.parseInt(age));
}
}
result.add(student);
}
}
System.out.println(result.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Student{
private String stuId;
private String stuName;
private Integer stuAge;
public Student(){
}
public Student(String stuId, String stuName, Integer stuAge) {
this.stuId = stuId;
this.stuName = stuName;
this.stuAge = stuAge;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Integer getStuAge() {
return stuAge;
}
public void setStuAge(Integer stuAge) {
this.stuAge = stuAge;
}
@Override
public String toString() {
return "stuId is "+getStuId()+"\n"+"stuName is "+getStuName()+"\n"+"stuAge is"+getStuAge()+"\n";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<students description="student list">
<student>
<id>1</id>
<name>Lucy</name>
<age>16</age>
</student>
<student>
<id>2</id>
<name>Bill</name>
<age>17</age>
</student>
</students>