面试题之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的整个代码过程,相对来说是比较的简单的。
面试题之xml解析?的更多相关文章
- PHP面试题及答案解析(8)—PHP综合应用题
1.写出下列服务的用途和默认端口. ftp.ssh.http.telnet.https ftp:File Transfer Protocol,文件传输协议,是应用层的协议,它基于传输层,为用户服务,它 ...
- PHP面试题及答案解析(6)—PHP网络编程
1.禁用COOKIE后SEESION还能用吗? 可以,COOKIE和SESSION都是用来实现会话机制的,由于http协议是无状态的,所以要想跟踪一个用户在同一个网站之间不同页面的状态,需要有这么一个 ...
- PHP面试题及答案解析(4)—PHP核心技术
1.写出一个能创建多级目录的PHP函数. <?php /** * 创建多级目录 * @param $path string 要创建的目录 * @param $mode int 创建目录的模式,在 ...
- PHP面试题及答案解析(1)—PHP语法基础
1. strlen( )与 mb_strlen( )的作用分别是什么? strlen和mb_strlen都是用于获取字符串长度.strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数.如 ...
- java170道面试题汇总+详细解析
2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...
- xml解析技术
本文总结Dom,sax解析, 使用Java作为工具解析xml文档. 1 Dom 综述:Dom解析xml通常也称为xmlDom (和htmlDom技术差不多),将xml文档封装成树,好处就是xml中的 ...
- Duilib源码分析(三)XML解析器—CMarkup
上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...
- JSON解析和XML解析对比
JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...
- 【Android】实现XML解析的几种技术
本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...
随机推荐
- 定时任务--mysql数据库备份
vim /home/back.sh #!/bin/bash USER="******" PASSWORD="******" DATABASE="*** ...
- 001. 使用IDEA新建一个JAVA最简单的Spring MVC JAVAWEB程序
1. 我们打开一个空的IDEA 2. 选择Java之后点击Next 3. 点击Next创建空白工程 4. 给工程取个名字,叫MYIDEA 5. 勾选之后,点击This Window按钮 6. 我们可以 ...
- 学习笔记(4)- DQN
宋皓宇 张伟男刘挺. (2018). 基于DQN的开放域多轮对话策略学习. 中文信息学报, 32(7), 99. http://jcip.cipsc.org.cn/CN/abstract/articl ...
- Ubuntu18.04-MySQL8.0-表名大小写敏感-远程连接
1.卸载 停止服务 sudo service mysql stop 删除mysql服务 sudo apt-get remove mysql-server 删除其他组件 sudo apt-get aut ...
- listenTo - backbone.js
listenToobject.listenTo(other, event, callback) 让 object 监听 另一个(other)对象上的一个特定事件.不使用other.on(event, ...
- 用Hyper-v 在win10下使用Docker-Desktop体验kubernetes
首先开启Hyper-v ,会自动创建一个交换机. 开启internet共享,自动创建的那个交换机(虚拟的网络适配器)会分配一个默认的IP 192.168.137.1,这个IP你不爽,就用注册表搜索并修 ...
- Centos7 更新配置为阿里源步骤
一.yum更换配置源过程 1.备份原有的.repo源文件 首先需要将之前的源进行备份(一般重要的配置文件都需要有备份的意识) # 进入源配置目录 cd /etc/yum.repos.d # 创建备份文 ...
- EcShop二次开发学习方法
EcShop二次开发学习方法 (2012-03-08 11:10:08) 转载▼ 标签: 京东 公用函数库 二次开发 sql语言 数据库设计 杂谈 分类: ecshop 近年来,随着互联网的发展,电子 ...
- 2020.2.19 restful的学习
restful Api 设计要素 3-8 如何设计Restful Api 资源路径(url),HTTP动词,过滤信息(做分页),状态码,错误处理,返回结果 3-9 初始化运行参数 3-10 ...
- 2017 青岛现场赛 Suffix
Consider n given non-empty strings denoted by s1 , s2 , · · · , sn . Now for each of them, you need ...