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

面试题之xml解析?的更多相关文章

  1. PHP面试题及答案解析(8)—PHP综合应用题

    1.写出下列服务的用途和默认端口. ftp.ssh.http.telnet.https ftp:File Transfer Protocol,文件传输协议,是应用层的协议,它基于传输层,为用户服务,它 ...

  2. PHP面试题及答案解析(6)—PHP网络编程

    1.禁用COOKIE后SEESION还能用吗? 可以,COOKIE和SESSION都是用来实现会话机制的,由于http协议是无状态的,所以要想跟踪一个用户在同一个网站之间不同页面的状态,需要有这么一个 ...

  3. PHP面试题及答案解析(4)—PHP核心技术

    1.写出一个能创建多级目录的PHP函数. <?php /** * 创建多级目录 * @param $path string 要创建的目录 * @param $mode int 创建目录的模式,在 ...

  4. PHP面试题及答案解析(1)—PHP语法基础

    1. strlen( )与 mb_strlen( )的作用分别是什么? strlen和mb_strlen都是用于获取字符串长度.strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数.如 ...

  5. java170道面试题汇总+详细解析

    2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...

  6. xml解析技术

    本文总结Dom,sax解析,  使用Java作为工具解析xml文档. 1 Dom 综述:Dom解析xml通常也称为xmlDom (和htmlDom技术差不多),将xml文档封装成树,好处就是xml中的 ...

  7. Duilib源码分析(三)XML解析器—CMarkup

    上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...

  8. JSON解析和XML解析对比

    JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...

  9. 【Android】实现XML解析的几种技术

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

随机推荐

  1. redis requires Ruby version >= 2.2.2 系统默认 ruby 版本过低,导致 Redis 接口安装失败

    安装 Redis 接口时异常 ,系统 ruby 版本过低 ! 输入命令 " gem install redis " 出现 " ERROR:  Error installi ...

  2. golang数据库操作初体验

    在golang中,提供了标准的数据库接口database/sql包,做过数据库开发的应该知道,不同的数据库有不同的数据库驱动.比如mysql等,我们可以去找 https://golang.org/s/ ...

  3. 如何安装部署和优化Tomcat?(Tomcat部署和优化与压测,虚拟主机配置,Tomcat处理请求的过程)

    文章目录 前言 一:Tomcat安装部署 1.1:Tomcat简介 1.2:Tomcat核心组件 1.3:Tomcat处理请求的过程 1.3.1:请求过程基本解释 1.3.2:请求过程详细解释 1.4 ...

  4. cmd常用小命令

    #设置n秒后自动关机 -a取消 shutdown -s -t n #输出内容到fileName里,如果文件不存在将会创建文件,>是替换,>>是追加echo something > ...

  5. C++常量表达式、const、constexpr(C++11新增)的区别

    常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式. 程序先编译再运行:  在编译阶段, 编译器将在编译过程中把用到该常量的地方都全都替换为 常量的值. 但是常量 ...

  6. 科普:为什么 String hashCode 方法选择数字31作为乘子

    作者:coolblog 此文章转载自:https://segmentfault.com/a/1190000010799123 1. 背景 某天,我在写代码的时候,无意中点开了 String hashC ...

  7. RESTFul Client入门实例

    client.html文件内容为: <!DOCTYPE html> <html> <head> <title>RESTFul Client test p ...

  8. AVL-Tree (平衡二叉树)

    看到网上AVL-Tree大多数都是用相同的实现方式 —— 递归进行插入.删除.维护平衡等,而我比较喜欢用带父指针的数据结构,于是想了一下午,用C实现了一个迭代版的. 由于没有暂时没有好的画二叉树的工具 ...

  9. Golang mysql数据库

    基本操作: Open() – create a DB Close() - close the DB Query() - 查询 QueryRow() -查询行 Exec() -执行操作,update,i ...

  10. List模拟栈

    import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main<E ...