Dom4j解析XML文件,处理来至XML的数据信息
2016-06-09 00:39
399 查看
XML文件
使用Dom4j进行解析
运行结果:
单元测试通过!
控制台输出:
<?xml version="1.0" encoding="UTF-8"?> <datasets name="ds1"> <locators name="LoginSetMet"> <locator name="loginLocator" by="id">login</locator> <locator name="pwdLocator" by="name">tl_password</locator> <locator name="submitLocator" by="xpath">//input[@name='login_submit'] </locator> </locators> </datasets>
使用Dom4j进行解析
package com.auto.demo1; import java.io.InputStream; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; /** * dom4j java XML开源解析工具包 * * @author Monica * */ public class LocatorPaser { private Document doc;// 定义Document文档对象 // 默认的构造方法中完成对XML文件的解析 public LocatorPaser(){ InputStream in = getInputFileAsStream(this.getClass()); SAXReader reader = new SAXReader();//得到解析器 try{ doc = reader.read(in);//解析文档 }catch(DocumentException e){ e.printStackTrace(); } } private InputStream getInputFileAsStream(Class<? extends LocatorPaser> testClass) { // TODO Auto-generated method stub String packageName = ""; if(testClass.getPackage()!=null){ packageName = testClass.getPackage().getName() + "."; } String resourceBase = (packageName + testClass.getSimpleName()).replace('.', '/'); //得到当前类的完整路径 String resourceName; ClassLoader classLoader = testClass.getClassLoader(); resourceName = resourceBase + ".xml"; //XML文件与当前类同名,且在同一目录下 System.out.println("Searching for default input file:"+resourceName); return classLoader.getResourceAsStream(resourceName); //返回同名XML文件资源的获取 } public String getLocator(String name){ String locator = null; //查找到"datasets"标签 Element datasets = (Element) this.doc.selectSingleNode("//datasets"); //开始定位串解析 for(Iterator d = datasets.elementIterator("locators");d.hasNext();){ Element data = (Element)d.next(); for(Iterator e = data.elementIterator("locator");e.hasNext();){ Element elem = (Element)e.next(); System.out.println(elem); //获取当前结点的值 String value = elem.valueOf("."); System.out.println(value); //获取name属性值 String nameString = elem.valueOf("@name"); System.out.println("\n'"+nameString+"'"); if(name.equalsIgnoreCase(nameString)){ if(!elem.valueOf("@by").isEmpty()){ locator = elem.valueOf("@by")+"="+value;//将by属性值与当前节点值进行拼接,如”xpath=//input[@name='login_submit']" } break;//完成解析,跳出循环 } } } return locator;//返回定位串或者null } @Test public void testPaser(){ String locator = "loginLocator"; long curTime = System.currentTimeMillis(); String resultString = this.getLocator(locator); long delta = System.currentTimeMillis()-curTime; System.out.println("\n"+locator+"='"+resultString+"'\nTime used(ms)::"+delta); } }
运行结果:
单元测试通过!
控制台输出:
Searching for default input file:com/auto/demo1/LocatorPaser.xml org.dom4j.tree.DefaultElement@77f03bb1 [Element: <locator attributes: [org.dom4j.tree.DefaultAttribute@233c0b17 [Attribute: name name value "loginLocator"], org.dom4j.tree.DefaultAttribute@63d4e2ba [Attribute: name by value "id"]]/>] login 'loginLocator' loginLocator='id=login' Time used(ms)::34
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序