摘要:①读取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读写工具类的更多相关文章

  1. properties文件读写工具类

    java代码: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; ...

  2. Spring-Boot ☞ ShapeFile文件读写工具类+接口调用

    一.项目目录结构树 二.项目启动 三.往指定的shp文件里写内容 (1) json数据[Post] { "name":"test", "path&qu ...

  3. JSON对象与XML相互转换工具类

    依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...

  4. 适用于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通用)>,现在重新整理一 ...

  5. XML读写工具

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...

  6. android 文件读写工具类

    将可以序列化的对象通过base64编码后进行保存 但是感觉多数情况下,不需要采用这个功能,直接保存原始的json字符串,取出来之后再进行解析即可 package com.wotlab.home.mon ...

  7. 适用于app.config与web.config的ConfigUtil读写工具类

    之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一个更完善的版本,增加批量读写以及指定配置文件路径,代码如下: using System ...

  8. java文件读写工具类

    依赖jar:commons-io.jar 1.写文件 // by FileUtilsList<String> lines = FileUtils.readLines(file, " ...

  9. 阶段3 1.Mybatis_03.自定义Mybatis框架_4.自定义mybatis的编码-解析XML的工具类介绍

    导入xml操作的类和用到的相关包 创建util包,然后把提供好的XMLConfigBuilder.java文件复制3过来 复制过来,里面用到了很多dom4j的东西 打开pom.xml 输入depend ...

随机推荐

  1. vuex辅助函数和vuex5个属性

    在上篇中,我们可以知道如果想要访问vuex.store中state中的数据,需要this.$store.state.属性名.显然这样访问数据写的代码很很不简洁的,辅助函数就是用来解决这个问题的. 1. ...

  2. 设计模式开闭原则--java

    静态工厂模式 + 反射控制入参范围 public interface IPrinter { void print(); } public class CanonPrinter implements I ...

  3. SpringCloud学习系列-构建部门微服务消费者Module

    1.新建microservicecloud-consumer-dept-80 2.Pom <project xmlns="http://maven.apache.org/POM/4.0 ...

  4. 048:ORM模型基本的增删改查操作

    ORM对数据库的增删改查基本操作: 创建模型如下: 基本的增删改查如下:

  5. javaScript中的 call 和 apply

    call 和apply都可以实现函数的调用 // 普通函数的调用 function foo() { console.log('foo'); } foo(); // foo foo.call(); // ...

  6. SpringBoot整合AOP

    一.创建LogComponent类     类上加上@Component和@Aspect 表示把该类注册成spring组件和aop         二.创建6个方法     2.1     @Poin ...

  7. weighted choice in python

    对列表按概率采样 Input: a collection C of elements and a probability distribution p over C; Output: an eleme ...

  8. HTML和CSS遇到的细节问题

    一.列表项标记窜出div盒子 列表项标记窜出盒子,是因为设置了 *; } ,消除了<li>元素的默认外边距. 结解决方法:消除*{}选择器或是设置外边距 列表项目标记与边距有关 二.div ...

  9. phpstudy升级5.7

    1:备份当前数据库数据. 最好是导成 SQL 文件 2:备份 PhpStudy 下的 MySQL 文件夹.以防升级失败.还可以使用旧版本的数据库 3:下载MySQL5.7.解压.然后放在 PhpStu ...

  10. 洛谷p3956 棋盘(NOIP2017 t3)

    在noip考场上本来以为只能骗暴力分,没想到最后A了: 本蒟蒻的做法比较简(zhi)单(zhang):记忆化深搜(考场上本来是想打广搜的,但我深搜稳一点就这样打了): 具体:每个点用一个f数组记录当前 ...