面試題之xml解析?


 

題目是:用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的整個代碼過程,相對來說是比較的簡單的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM