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 ...
随机推荐
- mysql支持的存储引擎
1.InnoDB 存储引擎 支持事务,其设计目标主要面向联机事务处理(OLTP)的应用.其特点是行锁设计.支持外键,并支持类似 Oracle 的非锁定读,即默认读取操作不会产生锁. 从 MySQL 5 ...
- wordpress各个文件作用详解
1.index.php:wordpress核心索引文件,即博客输出文件. 2.license.txt:WordPress GPL许可证文件. 3.my-hacks.php:定义了博客输出之前处理的追加 ...
- java中构造器(Constructor)
大部分内容转自:http://tech.it168.com/j/2006-05-18/200605181021879.shtml 构造器是一个创建对象时被自动调用的特殊方法,为的是初始化 ...
- nginx 启动关闭
#检查语法 /application/nginx/sbin/nginx –t #平滑重启 /application/nginx/sbin/nginx –s reload #不间断服务重启,将 pid ...
- libboost_regex 备份用时
libboost_regex-vc100-mt-s-1_57.lib //生成数据
- GUI学习之三十一—QLabel学习总结
前面所有的控件都是归于输入控件的,下面我们要总结下展示控件的用法.首先要将的就是最常用的QLabel. 一.描述 标签控件(QLabel)提供了文本或图像显示的功能,可以用来显示 普通文本 数字 富 ...
- CPU指令重排序与MESI缓存一致性
一.重排序场景 class ResortDemo { int a = 0; boolean flag = false; public void writer() { a = 1; //1 flag = ...
- 应用程序不了找到mysql中的表,客户端可以正常打开表
原因是mysql中区分大小写的参数:lower-case-table-names=1 默认是区分大小写的,程序中代码可能是大小写混合的,其中访问数据库的sql是大小写混合的.所以找不到数据库中的表 ...
- man---中英文翻译
一. 总览---SYNOPSIS 二.
- python-unittest生成报告的几种方式
import unittest suite = unittest.TestSuite() #构造套件 #按测试方法添加 suite.addTest(测试类名('方法名')) suite.addTest ...