java的dom解析xml

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34792830/article/details/84918026
package com.hl.chapter1;

import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class ReadXmlDom {
	
	private static DocumentBuilderFactory builderFactory = null;
	private static DocumentBuilder builder = null;
	private static Document document = null;
	
	static{
		builderFactory = DocumentBuilderFactory.newInstance();
		try {
			builder = builderFactory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
	}
	
	public List<User> getUsers(String filePath) throws Exception{
		document = builder.parse(filePath);
		NodeList nodeList = document.getElementsByTagName("user");
		int size = nodeList.getLength();
		List<User> users = new ArrayList<>();
		for(int i=0;i<size;i++){
			User user = new User();
			Node node = nodeList.item(i);
			//获取所有属性
			NamedNodeMap namedNodeMap = node.getAttributes();
			//获取id值
			String id = namedNodeMap.getNamedItem("id").getTextContent();
			user.setId(id);
			//获取一个user节点的所有节点
			NodeList nodeChildNodes = node.getChildNodes();
			for(int j=1;j<nodeChildNodes.getLength();j+=2){
                //获取user节点下的一个子节点
				Node node2 = nodeChildNodes.item(j);
				if("name".equals(node2.getNodeName())){
					user.setName(node2.getTextContent());
				}else if ("age".equals(node2.getNodeName())) {
					user.setAge(node2.getTextContent());
				}else if ("num".equals(node2.getNodeName())) {
					user.setNum(node2.getTextContent());
				}
			}
			users.add(user);
		}
		return users;
	}
	
	public static void main(String[] args) throws Exception {
		ReadXmlDom xmlDom = new ReadXmlDom();
		List<User> users = xmlDom.getUsers("src/com/hl/chapter1/user.xml");
		System.out.println(users);
	}

}

xml

<?xml version="1.0" encoding="UTF-8"?>
<users>
	<user id="1">
		<name>张三</name>
		<age>23</age>
		<num>5115</num>
	</user>
	<user id="2">
		<name>李四</name>
		<age>18</age>
		<num>5116</num>
	</user>
	<user id="3">
		<name>娜娜</name>
		<age>34</age>
		<num>523</num>
	</user>
</users>

user.java

package com.hl.chapter1;

public class User {

	private String id;
	private String name;
	private String age;
	private String num;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	
}

猜你喜欢

转载自blog.csdn.net/qq_34792830/article/details/84918026