xml解析之DOM详解

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>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值