摘要:①读取XML文件,生成pojo对象;②将对象信息保存到xml中。
步骤:
①新建一个普通的java类BasePage;
packagecom.test.selenium.pages;importjava.util.Map;importcom.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("basePage")public classBasePage {
@XStreamAlias("pageName")privateString pageName;
@XStreamAlias("pageXpaths")private MappageXpaths;publicBasePage() {}public BasePage(String pageName, MappageXpaths) {super();this.pageName =pageName;this.pageXpaths =pageXpaths;
}publicString getPageXpath(String name) {returnpageXpaths.get(name);
}publicString getPageName() {returnpageName;
}public voidsetPageName(String pageName) {this.pageName =pageName;
}public MapgetPageXpaths() {returnpageXpaths;
}public void setPageXpaths(MappageXpaths) {this.pageXpaths =pageXpaths;
}
}
②新建一个page.xml;
pageName
name2
value2
name1
value1
③封装XMLTools类;
packagecom.test.selenium.utils;importjava.io.FileInputStream;importjava.io.FileOutputStream;importcom.thoughtworks.xstream.XStream;importcom.thoughtworks.xstream.annotations.XStreamAlias;importcom.thoughtworks.xstream.io.xml.DomDriver;public classXMLTools {/*** 将对象信息保存到xml中
*
*@paramentity
*@paramfile*/
public static void saveToXml(T entity, String file) throwsException {
XStream stream= new XStream(new DomDriver("utf-8"));
stream.autodetectAnnotations(true);
FileOutputStream fileOutputStream= newFileOutputStream(file);
stream.toXML(entity, fileOutputStream);
}/*** 从配置文件中读取配置,并自动转换为对应的对象
*
*@paramclazz
*@paramfile
*@return对象
*@throwsException*/@SuppressWarnings({"unchecked"})public static T getFromXml(Class clazz, String file) throwsException {
XStream xStream= new XStream(new DomDriver("utf-8"));
xStream.autodetectAnnotations(true);
FileInputStream fileInputStream= null;
T entity= null;
fileInputStream= newFileInputStream(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);returnentity;
}
}
④工具类XMLTools的测试类;
packagecom.test.selenium.test;importjava.util.HashMap;importjava.util.Map;importorg.junit.Test;importcom.test.selenium.pages.BasePage;importcom.test.selenium.utils.XMLTools;public classXMLToolsTest {
@Testpublic voidtestGetPage() {
BasePage basePage= null;try{
basePage= XMLTools.getFromXml(BasePage.class, "pages/page.xml");
System.out.println(basePage.getPageName());for (Map.Entrypath:basePage.getPageXpaths().entrySet()){
System.out.println(path.getKey());
System.out.println(path.getValue());
}
}catch(Exception e) {
e.printStackTrace();
}
}
@Testpublic voidtestSavePage(){
Map 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:
pageName
name2
value2
name1
value1