做自动化测试的人,都应该对XPATH很熟悉了,但是在用JAVA解析XML时,我们通常是一层层的遍历进去,这样的代码的局限性很大,也不方便,于是我们结合一下XPATH,来解决这个问题。
所需要的JAR包:
dom4j.jar
jaxen.jar
xmlbeans.jar
具体的代码如下:
public class ParseXml {
private String filePath;
private Document document;
public ParseXml(String filePath) {
this.filePath = filePath;
this.load(this.filePath);
}
private void load(String filePath){
File file = new File(filePath);
if (file.exists()) {
SAXReader saxReader = new SAXReader();
try {
document = saxReader.read(file);
} catch (DocumentException e) {
System.out.println("文件加载异常:" + filePath);
}
} else{
System.out.println("文件不存在 : " + filePath);
}
}
public Element getElementObject(String elementPath) {
return (Element) document.selectSingleNode(elementPath);
}
@SuppressWarnings("unchecked")
public List<Element> getElementObjects(String elementPath) {
return document.selectNodes(elementPath);
}
@SuppressWarnings("unchecked")
public Map<String, String> getChildrenInfoByElement(Element element){
Map<String, String> map = new HashMap<String, String>();
List<Element> children = element.elements();
for (Element e : children) {
map.put(e.getName(), e.getText());
}
return map;
}
public boolean isExist(String elementPath){
boolean flag = false;
Element element = this.getElementObject(elementPath);
if(element != null) flag = true;
return flag;
}
public String getElementText(String elementPath) {
Element element = this.getElementObject(elementPath);
if(element != null){
return element.getText().trim();
}else{
return null;
}
}
public static void main(String[] args) {
ParseXml px = new ParseXml("config/TestBaidu.xml");
List<Element> elements = px.getElementObjects("/*/testUI");
}
}
java分享第十七天-01(封装操作xml类)的更多相关文章
-
“全栈2019”Java第六十七章:内部类、嵌套类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
-
java分享第十七天-03(封装操作mysql类)
JAVA操作mysql所需jar包:mysql-connector-java.jar代码: import java.sql.*; import java.util.ArrayList; import ...
-
java分享第十七天-02(封装操作excel类)
java解析EXCEL用的是POI的JAR包,兼容EXCEL2003及2007+版本的EXCEL所需要的JAR包:poi-3.8.jarpoi-ooxml.jarpoi-ooxml-schemas. ...
-
java分享第七天-01(Hashmap和Hashtable的区别&;Property)
一.Hashmap和Hashtable的区别 1 主要:Hashtable线程安全,同步,效率相对低下 HashMap线程不安全,非同步,效率相对高 2 父类:Hashtable是Dictionary ...
-
【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类
一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...
-
PHP DOMDocument操作 XML类 属性、方法
属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataType 返回此节点的数据类型 Definition 以DTD或XML模式给出的节 ...
-
.NET操作Xml类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.I ...
-
C#操作XML类
XML转换成HTML 1.//装载xsl XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("output. ...
-
Java代码封装redis工具类
maven依赖关系: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...
随机推荐
-
SQLServer2008R2 error 40解决方法
实际遇到的问题,以下为搜到的解决方案,亲测可用 转自 http://blog.csdn.net/laga516/article/details/7696577 最近一直在配置服务器, 这当中最头疼的就 ...
-
Codeforces Round #145 (Div. 2, ACM-ICPC Rules)
A. Lefthanders and Righthanders \(i\)与\(i+\frac n2\)匹配,根据左右手调整位置. B. Reading 排序,取前\(k\)个. C. Weather ...
-
HTML笔记1
HTML和css技术 HTML和css技术 html的介绍 网页的基本结构 今天学习的标签 标签属性 浏览器 DW快捷键 相对路径和绝对路径 HTML当中的颜色模式 网页当中常用的图片格式 html的 ...
-
string 对象及其操作
标准库类型string 标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件.作为标准库的一部分,string定义在命名空间std中.接下来的示例都假定了已包 ...
-
java基础之 第一步 :jdk安装配置
Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.ora ...
-
【基础】这15种CSS居中的方式,你都用过哪几种?
简言 CSS居中是前端工程师经常要面对的问题,也是基本技能之一.今天有时间把CSS居中的方案汇编整理了一下,目前包括水平居中,垂直居中及水平垂直居中方案共15种.如有漏掉的,还会陆续的补充进来,算做是 ...
-
[JSOI2008]星球大战starwar BZOJ1015
并查集 正序处理时间复杂度为n^2,考虑逆序处理,这样,时间复杂度从n^2降为nlogn 附上代码: #include <cstdio> #include <algorithm> ...
-
3. [leetcode] Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. Examples Give ...
-
【转】数据库获得当前时间getdate()
CONVERT(nvarchar(10),count_time,121): CONVERT为日期转换函数,一般就是在时间类型 (datetime,smalldatetime)与字符串类型(nchar, ...
-
DNS、bind 953端口
1.953端口是rndc 的端口 2.rndc是监控bind的统计数据用的,同时不需要为了更新某个zone而重启bind 3.输入rndc ,如果ok的话,是这样的 4.看到第一条语句了没. 不需要重 ...