摘要:①读取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. vue(js)点击目标div以外区域将目标div隐藏

    今天开发新项目的时候,有个需求,点击一个div 展示出个弹出窗 弹出窗标题的颜色要跟点击的div图标颜色一致, 所以这就需要我遍历一下多个数据, 然后需要点击弹出div的外部其他区域,隐藏这个div. ...

  2. mkfs - 创建一个 Linux 文件系统

    总览 mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ] 描述 mkfs mkfs 用来在指定设备创建一个 Linux 文件系统,通常是在硬盘上. 文件系统 ...

  3. Spring Boot日志处理

    2.4 日志处理 2.4.1 记录日志内容 请求url 访问者ip 调用方法classMethod 参数args 返回内容 2.4.2 新建包aspect,新建日志切面处理类 package com. ...

  4. pymongo操作mongo数据库的查操作

    一:  数据结构 { "_id" : ObjectId("5de8a5b748a75a8d48b72bdc"), ", ", ", ...

  5. php----等比缩放图片

    <?php /** * Created by PhpStorm. * User: admin * Date: 2019/11/19 * Time: 8:54 */ $filename = 'lo ...

  6. 【GDOI 2016 Day1】疯狂动物城

    题目 分析 注意注意:码农题一道,打之前做好心理准备. 对于操作1.2,修改或查询x到y的路径,显然树链剖分. 对于操作2,我们将x到y的路径分为x到lca(x,y)和lca(x,y)到y两部分. 对 ...

  7. npm cache clean --force

    当出现这个问题时npm ERR! Unexpected end of JSON input while parsing near '...,"dist":{"shasum ...

  8. 6392. 【NOIP2019模拟2019.10.26】僵尸

    题目描述 题解 吼题但题解怎么这么迷 考虑一种和题解不同的做法(理解) 先把僵尸离散化,h相同的钦(ying)点一个大小 (可以发现这样每种情况只会被算正好一次) 计算完全被占领的方案,然后1-方案/ ...

  9. SonarQube规则之漏洞类型

    漏洞类型: 1."@RequestMapping" methods should be "public"漏洞 阻断标注了RequestMapping是contr ...

  10. bullet学习日记

    最近需要bullet用物理引擎做一个测量类的项目,因为半途接手,物理部分其实已经实现,但犹于对bullet基本不了解,导致相关部分完全改不动,这两天静下心来把物理引擎用法了解了一翻,顺便做点笔记,以便 ...