題目是:用java程序將xml中的數據保存到實體對象中,如何實現?
xml如下:
<?xml version="1.0" encoding="UTF-8"?> <root> <user> <userid>a01</userid> <username>arran</username> </user> <user> <userid>a02</userid> <username>jack</username> </user> <user> <userid>a03</userid> <username>eval</username> </user> </root>
以上這是一個上機題,按照要求我們就需要使用首先將xml文檔進行解析,然后再提取出其中的數據,然后保存到實體對象中。那么下面來看看代碼!
1、首先我們創建一個java工程,然后在項目的根目錄下創建一個user.xml,內容就是上面的這一段xml
2、做一個基本的准備
* 創建user實體類
* 創建一個用來測試的類。
* 這里我就簡單的創建了兩個類來做基本測試。
3、實現代碼如下:
package com.lxd.xmldemo.dao; 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; import com.lxd.xmldemo.pojo.User; public class UserDao { /** * 獲取xml中的user對象 * @return */ public static List<User> getXmlUser(String url){ // 創建一個集合,用來保存xml解析獲取到的值,然后做為返回值 List<User> users = new ArrayList<>(); // 創建一個工廠對象 try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder();
// 通過url找到具體的xml然后解析成文檔對象 Document document = builder.parse(url);
// 查詢出user的節點集合 NodeList userList = document.getElementsByTagName("user"); // 遍歷userList for (int i = 0; i < userList.getLength(); i++) { User user = new User(); // 獲取第 i 個user節點 Node node = userList.item(i);
// 獲取user結點的子節點,包含了Test類型的換行 NodeList cList = node.getChildNodes();
List<String> arr = new ArrayList<>(); for (int j = 1; j < cList.getLength(); j+=2) { Node subNode = cList.item(j); arr.add(subNode.getFirstChild().getTextContent()); } user.setId(arr.get(0)); user.setName(arr.get(1)); users.add(user); } } catch (Exception e) { e.printStackTrace(); } return users; } /** * 主程序 * @param args */ public static void main(String[] args) { List<User> users = getXmlUser("user.xml"); if(null != users) { for (User user : users) { System.out.println(user); } } } }
* 以上就是一個基於DOM來解析xml的整個代碼過程,相對來說是比較的簡單的。