标准DOM解析

package com.logic.demo;

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.Node;
import org.w3c.dom.NodeList;

public class TestDemo {
	public static void main(String[] ages) throws Exception{
		//创建解析器工厂对象
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		//由这个解析器工厂对象 创建 相应的解析器对象
		DocumentBuilder builder = dbf.newDocumentBuilder();
		//由这个解析器 去解析某个具体的XML文件
		Document document = builder.parse("students.xml");
		List<Student> students = new ArrayList<Student>();
		NodeList list = document.getElementsByTagName("student");
		for(int i=0;i<list.getLength();i++){
			Student student = new Student();
			
			Node node = list.item(i);
			//getAttributes  获取某个节点的全部属性并组成了集合
			//getNamedItem  获取当前属性集合中的  某个具体属性
			//getNodeValue  获取某个具体属性的 属性值
			String id = node.getAttributes().getNamedItem("id").getNodeValue();
			student.setId(id);
			
			//获取每个student元素下的全部子元素
			NodeList list2 = node.getChildNodes();
			//遍历全部子元素,找到子元素为name 和age 的进行下一步处理
			//equals 比较两个字符串值是否相等
			for(int j=0;j<list2.getLength();j++){
				Node node2 = list2.item(j);
				if("name".equals(node2.getNodeName())){
					String name = node2.getFirstChild().getNodeValue();
					student.setName(name);
				}
				if("age".equals(node2.getNodeName())){
					String age = node2.getFirstChild().getNodeValue();
					student.setAge(Integer.parseInt(age));
				}
			}
			students.add(student);
		}
		for(int i=0;i<students.size();i++){
			System.out.println(students.get(i));
		}
	}
}

猜你喜欢

转载自blog.csdn.net/logic_c/article/details/79988328