java的dom解析xml
阿新 • • 發佈:2018-12-09
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; } }