题目是:用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. msbuild发布web应用程序

    aspnet_compiler.exe 只能编译 网站,web应用程序项目使用下面的命令即可. msbuild C:\Jenkins\jobs\KM_ERP_WEBAPP\workspace\KMWe ...

  2. iOS中统计平台的使用

    iOS腾讯Bugly使用  https://www.jianshu.com/p/f672e0d202ef iOS 百度统计的使用技巧 https://blog.csdn.net/yy1992320/a ...

  3. SQL查询效率注意事项 2011.12.27

    一.查询条件精确,针对有参数传入情况 二.SQL逻辑执行顺序 FROM-->JOIN-->WHERE-->GROUP-->HAVING-->DISTINCT-->O ...

  4. fiddler 保存请求数据并发送到自己的服务器接口

    通过Rules菜单打开 Customize Rules 搜索 OnBeforeResponse 方法,再方法后面添加如下代码: if (oSession.fullUrl.Contains(" ...

  5. 对象和Map转化gongju

    package czc.superzig.modular.utils; import java.lang.reflect.Field; import java.util.HashMap; import ...

  6. Linux之用户和用户组总结

    Linux是多用户.多任务操作系统 UID即为用户身份号码,具有唯一性,可通过UID来判断用户身份,有以下几种:UID为0,系统管理员,即root,万能:UID为1-999,系统账号,用于独立执行某些 ...

  7. Codeforces Round #580 (Div. 2)D(思维,Floyd暴力最小环)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;const int maxn=300;cons ...

  8. 「Luogu P3078 [USACO13MAR]扑克牌型Poker Hands」

    本题有\(O(N)\)的优秀做法,但是因为在考场上不一定能想到,就来分享一种\(O(N\log_2N)\)的做法.虽然有点慢,但是可以过. 前置芝士 线段树:提高组及以上必备内容,不会的同学可以学习一 ...

  9. uniGUI之uniPanel(20)

    1]uniPanel常用设置: 2]多个uniPanel在一个uniPanel里显示 uniPanel常用设置: 2]多个uniPanel在一个uniPanel里显示 uniPanel0.Alignm ...

  10. WEB, Flask - Session&Cookie

    参考: https://blog.csdn.net/nunchakushuang/article/details/74652877 http://portal.xiaoxiangzi.com/Prog ...