XML读写工具类
摘要:①读取XML文件,生成pojo对象;②将对象信息保存到xml中。
步骤:
①新建一个普通的java类BasePage;
package com.test.selenium.pages; import java.util.Map; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("basePage")
public class BasePage {
@XStreamAlias("pageName")
private String pageName; @XStreamAlias("pageXpaths")
private Map<String, String> pageXpaths; public BasePage() {} public BasePage(String pageName, Map<String, String> pageXpaths) {
super();
this.pageName = pageName;
this.pageXpaths = pageXpaths;
} public String getPageXpath(String name) {
return pageXpaths.get(name);
} public String getPageName() {
return pageName;
} public void setPageName(String pageName) {
this.pageName = pageName;
} public Map<String, String> getPageXpaths() {
return pageXpaths;
} public void setPageXpaths(Map<String, String> pageXpaths) {
this.pageXpaths = pageXpaths;
} }
②新建一个page.xml;
<basePage>
<pageName>pageName</pageName>
<pageXpaths>
<entry>
<string>name2</string>
<string>value2</string>
</entry>
<entry>
<string>name1</string>
<string>value1</string>
</entry>
</pageXpaths>
</basePage>
③封装XMLTools类;
package com.test.selenium.utils; import java.io.FileInputStream;
import java.io.FileOutputStream; import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.io.xml.DomDriver; public class XMLTools { /**
* 将对象信息保存到xml中
*
* @param entity
* @param file
*/
public static <T> void saveToXml(T entity, String file) throws Exception { XStream stream = new XStream(new DomDriver("utf-8"));
stream.autodetectAnnotations(true); FileOutputStream fileOutputStream = new FileOutputStream(file);
stream.toXML(entity, fileOutputStream);
} /**
* 从配置文件中读取配置,并自动转换为对应的对象
*
* @param clazz
* @param file
* @return 对象
* @throws Exception
*/
@SuppressWarnings({ "unchecked" })
public static <T> T getFromXml(Class<T> clazz, String file) throws Exception { XStream xStream = new XStream(new DomDriver("utf-8"));
xStream.autodetectAnnotations(true);
FileInputStream fileInputStream = null;
T entity = null; fileInputStream = new FileInputStream(file);
String alias = ""; if (clazz.isAnnotationPresent(XStreamAlias.class)) {
alias = clazz.getAnnotation(XStreamAlias.class).value();//获取POJO里面的@XStreamAlias()的值
} xStream.alias(alias, clazz); entity = (T) xStream.fromXML(fileInputStream); return entity;
} }
④工具类XMLTools的测试类;
package com.test.selenium.test; import java.util.HashMap;
import java.util.Map; import org.junit.Test; import com.test.selenium.pages.BasePage;
import com.test.selenium.utils.XMLTools; public class XMLToolsTest { @Test
public void testGetPage() {
BasePage basePage = null;
try {
basePage = XMLTools.getFromXml(BasePage.class, "pages/page.xml");
System.out.println(basePage.getPageName());
for (Map.Entry<String, String> path:basePage.getPageXpaths().entrySet()){
System.out.println(path.getKey());
System.out.println(path.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
} @Test
public void testSavePage(){
Map<String, String> paths = new HashMap<>();
paths.put("name1", "value1");
paths.put("name2", "value2"); BasePage basePage = new BasePage("pageName", paths); try {
XMLTools.saveToXml(basePage, "pages/page2.xml");
} catch (Exception e) {
e.printStackTrace();
}
} }
⑤运行结果;
--testGetPage:
pageName
name2
value2
name1
value1
--testSavePage:
<!--page2.xml文件-->
<basePage>
<pageName>pageName</pageName>
<pageXpaths>
<entry>
<string>name2</string>
<string>value2</string>
</entry>
<entry>
<string>name1</string>
<string>value1</string>
</entry>
</pageXpaths>
</basePage>
XML读写工具类的更多相关文章
- properties文件读写工具类
java代码: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; ...
- Spring-Boot ☞ ShapeFile文件读写工具类+接口调用
一.项目目录结构树 二.项目启动 三.往指定的shp文件里写内容 (1) json数据[Post] { "name":"test", "path&qu ...
- JSON对象与XML相互转换工具类
依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
- XML读写工具
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...
- android 文件读写工具类
将可以序列化的对象通过base64编码后进行保存 但是感觉多数情况下,不需要采用这个功能,直接保存原始的json字符串,取出来之后再进行解析即可 package com.wotlab.home.mon ...
- 适用于app.config与web.config的ConfigUtil读写工具类
之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一个更完善的版本,增加批量读写以及指定配置文件路径,代码如下: using System ...
- java文件读写工具类
依赖jar:commons-io.jar 1.写文件 // by FileUtilsList<String> lines = FileUtils.readLines(file, " ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_4.自定义mybatis的编码-解析XML的工具类介绍
导入xml操作的类和用到的相关包 创建util包,然后把提供好的XMLConfigBuilder.java文件复制3过来 复制过来,里面用到了很多dom4j的东西 打开pom.xml 输入depend ...
随机推荐
- 在XCode中使用XCTest
测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...
- python之 yield --- “协程”
在编程中我们经常会用到列表,以前使用列表时需要声明和初始化,在数据量比较大的时候也需要把列表完整生产出来,例如要存放1000给数据,需要准备长度1000的列表,这样计算机就需要准备内存放置这个列表,在 ...
- 关于jsp删除成功,添加成功等之后 页面自动跳转的js写法
因为比较常用,所以写在博客里保存起来,防止以后忘了不会写了: 删除成功,<span id="time" style="background:red"> ...
- PAT Advanced 1058 A+B in Hogwarts (20 分)
If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- a ...
- poj 3714 Raid(平面最近点对)
Raid Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7473 Accepted: 2221 Description ...
- python基础练习题2
01:python九九乘法表 for i in range(1,10): for j in range(1,i+1): print('{}*{}={}'.format(j,i,i*j),end='\t ...
- 2016.5.21【初中部 NOIP提高组】模拟赛A 总结
这次比赛的题目看上去好像不难,但当开始仔细想的时候才发现,并没有那么简单. T1旅行:刚开始看到k<=4的时候还以为有题可以AC了,不过呢,还是毫无思路. T3Pty爬山:雨天的尾巴最近打了几道 ...
- JS中的执行机制(setTimeout、setInterval、promise、宏任务、微任务)
1.执行机制 JS 是单线程的,处理 JS 任务(程序)只能一个一个顺序执行,所以 JS 中就把任务分为了同步任务和异步任务.同步的进入主线程先执行,异步的进入Event Table并注册函数,当指定 ...
- asp.net大文件上传解决方案
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- 【noip2016提高组day2T3】【愤怒的小鸟】状压dp转移时的集合包含
(上不了p站我要死了,图来自百度,侵权度娘背锅) 调死我了... 标题就说明了,死在了集合包含上.因为这道题与其他的状压题不同,其他的题基本上都是要求集合不重合,而这道题完全是可以的. 废话不多说,先 ...