zoukankan      html  css  js  c++  java
  • 面试题之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的整个代码过程,相对来说是比较的简单的。

  • 相关阅读:
    activiti流程跟踪图简单详解
    maven夹包引入的速度问题
    maven的pom.xml文件配置详解
    maven的简单使用
    Spring mail 邮件服务及其参数配置
    json格式的简单转换
    ajax的简单理解
    广告关闭按钮
    跨数据库调用
    如何完成DEDE CMS外部数据库调用|不同数据库调用数据
  • 原文地址:https://www.cnblogs.com/lxd-ld/p/10022261.html
Copyright © 2011-2022 走看看