maven解析xml+测试test
Posted 邦☆杠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven解析xml+测试test相关的知识,希望对你有一定的参考价值。
条件:maven项目
测试图:
创建maven项目,在maven项目中scr目录下有main、test(没有就创建)
一、解析XML文件方式
在main目录下有java、resources、webapp(没有就创建)
在java目录下创建源代码
Apple类
package com.wbg.entity; public class Apple { public void desc(){ System.out.println("我是苹果"); } }
Shop接口
package com.wbg.ioc; public interface Shop { Object getBen(String name); }
BeanShop接口
package com.wbg.ioc; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import javax.xml.transform.sax.SAXResult; import java.net.URL; import java.util.List; public class BeanShop implements Shop{ public BeanShop(String configXML){ //创建SAXReader对象 SAXReader saxReader=new SAXReader(); //获取XML文件路径 URL url= this.getClass().getClassLoader().getResource(configXML); try { //生成文档对应实体 Document document=saxReader.read(url); List<Element> list=document.getRootElement().elements(); for (Element element : list) { String id=element.attributeValue("id"); String clazz=element.attributeValue("class"); System.out.println(id); System.out.println(clazz); } } catch (DocumentException e) { e.printStackTrace(); } } @Override public Object getBen(String name) { return null; } }
在resources目录下创建xml文件
xml文件
<?xml version="1.0" encoding="UTF-8" ?> <beans> <bean id="apple" class="com.wbg.fruit.Apple"></bean> <bean id="banana" class="com.wbg.fruit.Banana"></bean> <bean id="pear" class="com.wbg.fruit.Pear"></bean> </beans>
在test文件下创建java目录,进行刷新下
在pom文件下加入dom4j包
<dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.1.1</version> </dependency>
进行添加测试
创建成功
进行测试
@Test public void getBen() { BeanShop beanShop=new BeanShop("fruit.xml"); }
成功
项目下载地址:https://github.com/weibanggang/javaXMLTest
二、使用注解方式
首先在pom文件中加入reflections
<dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.10</version> </dependency>
在annot包中创建一个注释
package com.wbg.annot; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Fruit { String value() default ""; int count() default 0; }
在ioc中创建BeanAnnoShop类继承Shop接口
BeanAnnoShop类
package com.wbg.ioc; import com.wbg.annot.Fruit; import org.reflections.Reflections; import java.util.HashMap; import java.util.Map; import java.util.Set; public class BeanAnnoShop implements Shop{ private static Map<String,Object> map=new HashMap<>(); public BeanAnnoShop(){ Reflections reflections=new Reflections("com.wbg"); Set<Class<?>> classes=reflections.getTypesAnnotatedWith(Fruit.class); for (Class<?> aClass : classes) { Fruit anot=aClass.getAnnotation(Fruit.class); try { map.put(anot.value(),aClass.newInstance()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } @Override public Object getBen(String name) { return map.get(name); } }
进行添加测试类
添加成功,输入测试
BeanAnnoShop beanAnnoShop=new BeanAnnoShop(); Apple apple= (Apple) beanAnnoShop.getBen("apple"); apple.desc();
完成
以上是关于maven解析xml+测试test的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 maven mvn test 命令行运行动态 testng.xml?
从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration
maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段