package Testlink;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; //定义操作XML文件的方法
public class XMLUtil {
//定义工作目录
private File workspaceFile; //定义所有文件对象
private File dirFile; //定义buildXML文件夹
private File buildXMLDirectory; //html文件夹
private File htmlFileDirectory; //工作目录路径
private String workspacePath; //buildXML文件夹路径
private String buildXMLDirectoryPath; //定义build.xml文件路ing
private String buildXMLFilePath; //html文件夹路径
private String htmlFileDirectoryPath; //tap文件路径
private String tapPath; //测试结果节点
private List<Node> testResult = new ArrayList(); //样本节点
private List<Integer> sampleNumber = new ArrayList(); //此方法用户改变build.xml文件
public void BuildXMLChange() {
//获取工作目录路径
workspaceFile = new File("");
workspacePath = workspaceFile.getAbsolutePath(); //获取工作目录下所有文件
this.dirFile = new File(workspacePath);
File[] files = dirFile.listFiles(); //定义buildXML文件夹路径
buildXMLDirectoryPath = workspacePath + "\\BuildXML"; //获取buildXML文件夹所有文件
buildXMLDirectory = new File(buildXMLDirectoryPath);
File[] xmlFiles = this.buildXMLDirectory.listFiles(); //获取build.xml文件路径
buildXMLFilePath = buildXMLDirectoryPath + "\\build.xml"; if (files.length != 0) { File[] arrayOfFile1;
int j = (arrayOfFile1 = files).length; for (int i = 0; i < j; i++) { File file = arrayOfFile1[i]; if (file.getName().equals("BuildXML")) { if (xmlFiles.length != 0) { File[] arrayOfFile2;
int m = (arrayOfFile2 = xmlFiles).length; for (int k = 0; k < m; k++) {
File xmlFile = arrayOfFile2[k];
if (xmlFile.getName().equals("build.xml")) { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
try {
//读取xml
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("file:///" + buildXMLFilePath);
NodeList nodeList = document.getElementsByTagName("property"); Node property = nodeList.item(0); NamedNodeMap nodeMap = property.getAttributes();
Node node = nodeMap.getNamedItem("value");
node.setTextContent(workspacePath); //写入XML
TransformerFactory factory = TransformerFactory.newInstance();
Transformer former = factory.newTransformer();
former.setOutputProperty("encoding", "GBK");
try {
former.transform(new DOMSource(document),
new StreamResult(new File(buildXMLFilePath)));
} catch (TransformerException e) {
e.printStackTrace();
}
System.out.println("build.xml文件不存在");
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e1) {
e1.printStackTrace();
}
}
}
} else {
System.out.println("BuildXML文件夹为空");
}
}
}
} else {
System.out.println("文件夹内容为空");
}
} public void XMLToTAP() {
workspaceFile = new File("");
workspacePath = workspaceFile.getAbsolutePath(); dirFile = new File(workspacePath); File[] files = dirFile.listFiles(); htmlFileDirectoryPath = (workspacePath + "\\XMLFolder"); htmlFileDirectory = new File(htmlFileDirectoryPath); File[] htmlFiles = htmlFileDirectory.listFiles(); tapPath = (workspacePath + "\\TAPFolder");
if (files.length != 0) {
File[] arrayOfFile1;
int j = (arrayOfFile1 = files).length;
for (int i = 0; i < j; i++) {
File file = arrayOfFile1[i];
if (file.getName().equals("XMLFolder")) {
if (htmlFiles.length != 0) {
File[] arrayOfFile2;
int m = (arrayOfFile2 = htmlFiles).length;
for (int k = 0; k < m; k++) {
File xmlFile = arrayOfFile2[k];
if (xmlFile.getName().endsWith(".xml")) {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(xmlFile); Element rootElement = document.getDocumentElement(); NodeList nodeList = rootElement.getChildNodes();
if (rootElement.hasChildNodes()) {
for (int x = 0; x < nodeList.getLength(); x++) {
if (nodeList.item(x).getNodeType() == 1) {
this.testResult.add(nodeList.item(x));
}
}
} else {
System.out.println("接口测试结果为空");
}
for (int y = 0; y < this.testResult.size(); y++) {
if (((Node) this.testResult.get(y)).getNodeName().equals("sample")) {
this.sampleNumber.add(Integer.valueOf(y));
}
}
for (int z = 0; z < this.sampleNumber.size(); z++) {
NamedNodeMap namedNodeMap = ((Node) this.testResult
.get(((Integer) this.sampleNumber.get(z)).intValue())).getAttributes();
if (namedNodeMap.getNamedItem("s").getNodeValue().equals("false")) {
String lbValue = namedNodeMap.getNamedItem("lb").getNodeValue(); String[] fileContent = lbValue.split("-"); String fileNewPath = this.tapPath + "\\" + fileContent[0] + ".tap"; File fileNew = new File(fileNewPath); FileWriter fWriter = new FileWriter(fileNew, true);
BufferedWriter bWriter = new BufferedWriter(fWriter);
bWriter.write("TAP version 13");
bWriter.newLine();
bWriter.write("1..1");
bWriter.newLine();
String resultStr = "not ok 1";
bWriter.write(resultStr);
bWriter.flush();
bWriter.close();
fWriter.close();
} else {
String lbValue = namedNodeMap.getNamedItem("lb").getNodeValue(); String[] fileContent = lbValue.split("-"); String fileNewPath = this.tapPath + "\\" + fileContent[0] + ".tap"; File fileNew = new File(fileNewPath); FileWriter fWriter = new FileWriter(fileNew, true);
BufferedWriter bWriter = new BufferedWriter(fWriter);
bWriter.write("TAP version 13");
bWriter.newLine();
String resultStr = "1..1\nok 1";
fWriter.write(resultStr);
bWriter.flush();
bWriter.close();
fWriter.close();
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("xml文件不存在");
}
}
} else {
System.out.println("XML文件夹为空");
}
}
}
} else {
System.out.println("文件夹内容为空");
}
}
}

  

XMLUtil的更多相关文章

  1. 上次遗留下来的XMLUtil的问题

    ·在上周留下了一个关于XMLUtil的问题,问题大概是这样的,需要通过读取一个XML文件,然后在内存中生成一个对应的javaBean.之前写的那个很是糟糕,照着一个XML去写了一个"Util ...

  2. java实现xml格式与javabean之间的转换XmlUtil类

    XmlUtil类:不多说,直接撸代码: /** * java 转换成xml * @Title: toXml * @Description: TODO * @param obj 对象实例 * @retu ...

  3. XStream 工具类 [ XmlUtil ]

    pom.xml <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId> ...

  4. xmlUtil 解析 创建

    http://yangzi09150915.blog.163.com/blog/static/32953487201072911410398/ package com.aibi.cmdc.webSer ...

  5. xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil

    若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...

  6. 反射 XMLUtil

    package com.dys.util; import java.beans.Introspector; import java.beans.PropertyDescriptor; import j ...

  7. 工厂方法模式——创建型模式02

    1. 简单工厂模式     在介绍工厂方法模式之前,先介绍一下简单工厂模式.虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁. (1 ...

  8. 复杂的xml转化为java实体

    一.样例一: 以根据订单号向支付宝查询支付是否成功为例(成功信息) 失败信息: <?xml version="1.0" encoding="utf-8"? ...

  9. XStream简单入门

    简单的讲,XStream 涉及的就五个知识点:详情参考 官网 混叠,注解,转换器,对象流和操作json! 下面就用几个简单的例子来实现上述五个知识点! 基本步骤: 第1步:创建XStream对象. 通 ...

随机推荐

  1. Gradle 详解

    Gradle简单来说,就是工程的管理,帮我们做了依赖,打包,部署,发布等工作.就像一个管家管理我们的项目,我们只用关心写代码就可以了. 1 gradle-wraaper.properties 主工程的 ...

  2. 使用thumbnailator给图片加水印

    引入方式:Maven <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnail ...

  3. day50—JavaScript鼠标拖拽事件

    转行学开发,代码100天——2018-05-05 今天通过鼠标拖拽事件复习巩固一下鼠标事件. 鼠标拖拽事件需要记住两点: 1.距离不变 2.鼠标事件(按下,移动,抬起) <div id=&quo ...

  4. VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计

    目录 目录 前文列表 备份思路 备份算法 备份细节 连接到 vCenter 还是 ESXi 如何选择快照类型 是否开启 CBT 如何获取备份数据 如何提高备份数据的传输率 备份厚置备磁盘和精简置备磁盘 ...

  5. fiddler模拟弱网操作

    弱网是app测试需要覆盖的一种场景 目录 1.认识弱网 2.fiddler模拟弱网配置 3.弱网下可能发生的问题 1.认识弱网 弱网.2G.3G建议的上下行速率如下,同时还可以控制丢包率的数据 网络 ...

  6. element-ui走马灯如何实现图片自适应 长度和高度 自适应屏幕大小

    最近写用vue2.0写一个项目,用到了走马灯效果,由于项目赶时间,想偷下懒,第一次引用了element组件(纯JS也可以写的出来,赶时间嘛,懂得....),结果用了发现一个问题,element的组件( ...

  7. Java 基础-类与面向对象

    类 Object 类(java.lang.Object)是所有 Java 类的直接或间接父类. 成员方法及变长参数 方法定义: [public | protected | private] [stat ...

  8. git.ZC_命令积累

    1.删除文件 git rm 想要删除的文件的名字及其后缀 git commit -m "对本次提交的描述信息" git push 删除文件夹,执行命令: git rm 想要删除的文 ...

  9. spring源码下载及转入ECLIPSE

    转自:https://www.cnblogs.com/scevecn/p/6043284.html 本例spring源码版本是4.3.0的, 所以jdk需要准备1.8的(不同版本源码要求的jdk不一样 ...

  10. RocketMQ安装部署及整合Springboot

    消息中间件的功能: 通过学习ActiveMq,kafka,rabbitMq这些消息中间件,我们大致能为消息中间件的功能做一下以下定义:可以先从基本的需求开始思考 最基本的是要能支持消息的发送和接收,需 ...