Java之XML操作:从XML中直接获取数据
本文介绍如何将数据记录在XML文件中,然后通过DOM4J直接从XML中读取到数据。
依赖包:
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
工具类代码:
package testTraffic.utils; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; /**
* XmlUtils class
*
* @author gongxingrui
* @date 2018-12-07
**/
public class XmlUtils { public static Document readXml(String filePath) throws DocumentException {
return readXml(new File(filePath));
} public static Document readXml(File file) throws DocumentException {
SAXReader reader = new SAXReader();
return reader.read(file);
} public static Document readXml(InputStream inputStream) throws DocumentException {
SAXReader reader = new SAXReader();
return reader.read(inputStream);
} public static Document readXmlFromResources(String resource) throws DocumentException, IOException, URISyntaxException {
SAXReader reader = new SAXReader();
return reader.read(ResourcesUtils.getResourceAsFile(resource));
} public static String getAttribute(Element element, String attrName) {
return element.attributeValue(attrName);
} public static String getText(Element element) {
return element.getText();
} public static List<Element> getElements(Element element, String tagName) {
return element.elements(tagName);
} /**
* 根据节点名称获取子节点数据
*/
public static String getElementText(String resource, String qName) throws Exception {
Element root = readXmlFromResources(resource).getRootElement();
String text = root.elementText(qName);
return text.trim();
} /**
* 根据节点名称获取子节点的子节点数据
*/
public static String getElementText(String resource, String qName, String SubQName) throws Exception {
Element root = readXmlFromResources(resource).getRootElement();
String text = root.element(qName).elementText(SubQName);
return text.trim();
} /**
* 根据节点名称获取子节点的子节点的数据列表
*/
public static List<String> getElementTextList(String resource, String qName) throws Exception {
List<Element> elementList = readXmlFromResources(resource).getRootElement().element(qName).elements();
List<String> list = new ArrayList<>();
for (Element e : elementList) {
list.add(e.getTextTrim());
}
return list;
} }
测试代码:
@Test
public void testXML6() throws Exception {
String path2 = "shelby/data/sql/demo/sql2.xml";
String s = XmlUtils.getElementText(path2, "insert_1");
logger.info(s); List<String> list = XmlUtils.getElementTextList(path2, "del_group");
logger.info(list); String s2 = XmlUtils.getElementText(path2, "del_group_2", "del_2");
logger.info(s2);
}
测试结果:
-- ::14.746 INFO testTraffic.testDemo.testXmlDemo testXML6 : insert into `t_admin_user` (`id`, `user_name`, `user_password`, `del_flag`, `create_time`, `update_time`)
VALUES( null,'testuser','testuser123','','2019-01-21 19:43:58','2019-01-22 19:44:03');
-- ::14.763 INFO testTraffic.testDemo.testXmlDemo testXML6 : [delete from t_admin_user WHERE user_name = 'testuser';, delete from t_admin_user WHERE user_name = 'testuser2';]
-- ::14.768 INFO testTraffic.testDemo.testXmlDemo testXML6 : delete from t_admin_user WHERE user_name = 'testuser2'; Process finished with exit code
XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<mybatisGroup id="预置数据语句">
<del_1 id="del_1" type="delete">
delete from t_admin_user WHERE user_name = 'testuser';
</del_1>
<del_2 id="del_2" type="delete">
delete from t_admin_user WHERE user_name = 'testuser2';
</del_2>
<insert_1 id="insert_1" type="insert">
insert into `t_admin_user` (`id`, `user_name`, `user_password`, `del_flag`, `create_time`, `update_time`)
VALUES( null,'testuser','testuser123','0','2019-01-21 19:43:58','2019-01-22 19:44:03');
</insert_1> <del_group>
<statement>
delete from t_admin_user WHERE user_name = 'testuser';
</statement>
<statement>
delete from t_admin_user WHERE user_name = 'testuser2';
</statement>
</del_group> <del_group_2>
<del_1>
delete from t_admin_user WHERE user_name = 'testuser';
</del_1>
<del_2>
delete from t_admin_user WHERE user_name = 'testuser2';
</del_2>
<del_3>
delete from t_admin_user WHERE user_name = 'testuser3';
</del_3>
</del_group_2> </mybatisGroup>
Java之XML操作:从XML中直接获取数据的更多相关文章
- react+dva 全局model中异步获取数据state在组件中取不到值
先上结论,不是取不到,是写法有问题. 全文分4部分,1是问题描述,2是一开始的解决想法(错误做法),3是问题产生原因的思考,4是正常解决方法.只想看结论直接跳4 1.问题描述 接触react dva一 ...
- dataTransfer.getData()在dragover,dragenter,dragleave中无法获取数据的问题
做拖拽相关效果时,想在ondragover时给被拖拽元素添加一些样式,于是在dragover事件的函数中通过dataTransfer.getData()获取在dragstart中设置的数据,然而发现d ...
- MySQL 中随机获取数据
由于需要大概研究了一下MYSQL的随机抽取实现方法. 目前采用的方法: SELECT * FROM tablename ORDER BY RAND() LIMIT 实现原理: 通过ORDER BY R ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- XML操作:1.XML类(http://blog.csdn.net/happy09li/article/details/7460521)
XML绑定TreeView private void XmlOperation_Load(object sender, EventArgs e) { path = AppDomain.CurrentD ...
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...
- 使用SQL语句从数据库一个表中随机获取数据
-- 随机获取 10 条数据 SQL Server:SELECT TOP 10 * FROM T_USER ORDER BY NEWID() ORACLE:SELECT * FROM (SELECT ...
- ASP.NET中动态获取数据使用Highcharts图表控件【Copy By Internet】
具体实现的效果如图:
- 哪种方式更适合在React中获取数据?
作者:Dmitri Pavlutin 译者:小维FE 原文:dmitripavlutin.com 国外文章,笔者采用意译的方式,以保证文章的可读性. 当执行像数据获取这样的I/O操作时,你必须发起获取 ...
随机推荐
- Could not get a resource from the pool 错误解决
错误关键信息:Could not get a resource from the pool 通常原因是因为远程服务器上的redis没有配置好. 解决方案如下:(1)将redis.conf中的bind: ...
- autoware
在 Autoware目录下执行 git checkout 将版本切换到1.10.0 因为最新版驱动有问题然后执行 sudo apt-get update sudo apt-get install -y ...
- KNN-笔记(1)
1 - 背景 KNN:k近邻,表示基于k个最近的邻居的一种机器学习方法.该方法原理简单,构造方便.且是一个非参数化模型. KNN是一个"懒学习"方法,也就是其本身没有训练过程.只有 ...
- display:inline-block 来解决盒子高度不一样,造成的盒子浮动
<style> ul{ width: 320px; //给父元素添加这两个属性 font-size: 0px; text-align: center/left; } li{ width: ...
- Git-命令行-使用 Tag 标记你的代码
前言 正文开始之前,我想我们需要弄明白几个问题: 1.tag 是什么? 2.使用tag 的好处? 3.tag 和 branch 的区别以及使用场景? tag 是什么? tag , 翻译过来是标签的意思 ...
- npm install 安装报错:npm ERR! EPERM npm ERR! -4048 npm ERR! Error: EPERM: operation not permitted, unlink 'D:\test\demo\code\materialT\node_modules\.staging'
更新项目依赖包,删除掉package-lock.json.node_modules,运行npm install,报如上错误信息,查询资料说是没有权限,本人用管理员身份打开powershell,运行np ...
- C# 相关面试试题简单的总结
最近一个搞NET开发的朋友离职了,想让我给他找点关于NET的相关面试题,准备抱一下佛脚,迎接新的挑战. 我赶紧找到以前检索的各种宝典,试题,今天梳理一下关于NET的基础知识点. 1.面向对象语言的三大 ...
- NLP是什么
NLP是什么 而在计算机领域, NLP(Natural Language Processing),也就是人们常说的「自然语言处理」,就是研究如何让计算机读懂人类语言. 这包括,既要能让计算机理解自然语 ...
- H5 audio标签
37-audio标签 注意点: audio标签的使用和video标签的使用基本一样, video中能够使用的属性在audio标签中大部分都能够使用, 并且功能都一样 只不过有3个属性不能用, heig ...
- c++ 入门之对象指针
我们想 像使用基本数据类型一样使用类,自然,类自然也有指针,我们通过下面的代码来领教一下对象指针存在的意义: # include "iostream" # include &quo ...