面试题之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的整个代码过程,相对来说是比较的简单的。

原文地址:https://www.cnblogs.com/lxd-ld/p/10022261.html