`

xml解析--DOM

阅读更多
xml解析---DOM

工程结构图:
[img]

[/img]

效果图:
[img]

[/img]

一、stu.xml
<?xml version="1.0" encoding="utf-8"?>
<students>
	<student id="1">
		<name>tom</name>
		<age>20</age>
	</student>
	
	<student id="2">
		<name>kite</name>
		<age>21</age>
	</student>
	
	<student id="3">
		<name>rose</name>
		<age>22</age>
	</student>

</students>

布局文件放在src下,而不是com.amaker.dom包下

二、Student类:
package com.amaker.dom;

public class Student {
	
	private int id;
	private int age;
	private String name;
	/**
	 * 无参构造方法
	 */
	public Student() {
		super();
	}
	/**
	 * 带参构造方法
	 */
	public Student(int id, int age, String name) {
		super();
		this.id = id;
		this.age = age;
		this.name = name;
	}


	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	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;
	}

	@Override
	public String toString() {
		return "Student [age=" + age + ", id=" + id + ", name=" + name + "]";
	}
	
	
}


三、解析类 Test:
package com.amaker.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.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Test {

	/**
	 * zzl
	 */
	public static void main(String[] args) {
		List<Student> list = readXML();
		for (Student s : list) {
			System.out.println(s);
		}
	}

	public static List<Student> readXML() {
		InputStream in = new Test().getClass().getClassLoader()
				.getResourceAsStream("stu.xml");
		List<Student> stulist = new ArrayList<Student>();
		Student currentStudent;
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document dom = builder.parse(in);
			Element root = dom.getDocumentElement();
			// 查找所有的student节点
			NodeList items = root.getElementsByTagName("student");
			for (int i = 0; i < items.getLength(); i++) {
				currentStudent = new Student();
				Element stuElement = (Element) items.item(i);
				int id = Integer.parseInt(stuElement.getAttribute("id"));
				currentStudent.setId(id);

				NodeList stuNode = stuElement.getChildNodes();
				for (int j = 0; j < stuNode.getLength(); j++) {
					Node node = stuNode.item(j);
					if (node.getNodeType() == Node.ELEMENT_NODE) {
						Element eNode = (Element) node;
						String data = eNode.getFirstChild().getNodeValue();
						if (eNode.getTagName().equals("name")) {
							currentStudent.setName(data);
						}
						if (eNode.getTagName().equals("age")) {
							currentStudent.setId(Integer.parseInt(data));
						}
					}
				}
				stulist.add(currentStudent);

			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return stulist;
	}
}
  • 大小: 10 KB
  • 大小: 13.3 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics