实体类
package com.joker.vo;
public class Student {
private String stuno;
private int age;
private String name;
private String address;
public String getStuno() {
return stuno;
}
public void setStuno(String stuno) {
this.stuno = stuno;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<jingying>
<bzr> 张老师 </bzr>
<students>
<student stuno="001">
<name>张三</name>
<age>20</age>
<address>山东济南</address>
</student>
<student stuno="002">
<name>李四</name>
<age>21</age>
<address>山西大同</address>
</student>
<student stuno="003">
<name>王五</name>
<age>22</age>
<address>山西晋中</address>
</student>
<student stuno="004">
<name>赵六</name>
<age>66</age>
<address>山西晋中</address>
</student>
</students>
</jingying>
dom解析
package com.joker.dom;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.joker.vo.Student;
/*
* dom解析的程序
* 我把一个个的学生信息提取出来封装成一个个学生对象
* 把学生封装到一个集合中去
*/
public class MyDomParser {
//元素内容:getTextContent()
//属性节点内容:getNodeValue()
public static void main(String[] args)
throws Exception{
List<Student> stulist=new ArrayList<Student>();//创建了一个集合,用来盛放student对象
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//dom解析器工厂
DocumentBuilder db=factory.newDocumentBuilder();//dom解析器
InputStream in=MyDomParser.class.getClassLoader().getResourceAsStream("students.xml");//获取要解析的文件的输入流
Document document=db.parse(in);//把输入流解析成一个文档对象 至此为止 我们有了document对象了
//所有 的操作 全部围绕document完成
//document--->students.xml
//Dom解析中 Node 节点 万事万物皆节点
NodeList list=document.getElementsByTagName("student");
int size=list.getLength();
for (int i = 0; i < size; i++) {
Student stu=new Student();
Node student=list.item(i);
//属性集合
NamedNodeMap nnm=student.getAttributes();//dom中所有的属性都是在属性集合中
Node stunonode=nnm.getNamedItem("stuno");//通过属性名获取属性节点
String stuno=stunonode.getNodeValue();
stu.setStuno(stuno);
NodeList list2=student.getChildNodes();
int list2size=list2.getLength();
System.out.println(list2size);
for (int j = 0; j < list2size; j++) {
Node nn=list2.item(j);
String nodename=nn.getNodeName();
//String nodevalue=nn.getNodeValue();
String nodevalue=nn.getTextContent();
if (nodename.equals("name")) {
stu.setName(nodevalue);
System.out.println("name:"+nodevalue);
}else if(nodename.equals("age")){
stu.setAge(new Integer(nodevalue));
System.out.println("age:"+nodevalue);
}else if(nodename.equals("address")){
stu.setAddress(nodevalue);
System.out.println("address:"+nodevalue);
}
}
//应该把stu加入到stulist
stulist.add(stu);
}
System.out.println("所有的数据为:");
for (Student stu:stulist) {//增强for循环循环遍历集合中的数据
System.out.println(stu.getStuno()+" "+stu.getName()+" "+stu.getAge()+" "+stu.getAddress());
}
}
}