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. img下面出现了蜜汁空白

    这段时间一直在做老师不值得的手机端的网页,在给元素设置宽度的时候都是使用百分比的形式,后来知道,这就是流体布局.不过这些都是后话,下面说的是在做静态手机站的时候遇到的一个问题. 因为使用了流体布局,几 ...

  2. loc() iloc() at() iat()函数

    1 四个函数都是用于dataframe的定位 []用于直接定位. loc()函数是用真实索引,iloc()函数是用索引序号. loc()函数切片是左闭右闭,iloc()函数切片是左闭右开. at(), ...

  3. JMeter Gui – TestElement约定(转自约会言行的博客,链接:http://blog.csdn.net/yue530tomtom/article/details/77649872?locationNum=4&fps=1)

    在编写任何JMeter组件时,必须注意某些特定的约定——如果JMeter环境中正确地运行JMeter组件,那么它将会运行.本部分描述了组件的GUI部分必须满足的约定. JMeter中的GUI代码严格地 ...

  4. 通过git新增、更新代码内容到github

    github可用于个人用户托管公开项目,对于异地上传下载十分方便 1.  准备工作 2.  首次上传执行命令集合 3.  更新执行命令集合 4.  命令总结 1.准备工作 a.注册github帐号 , ...

  5. Delphi7中ClientDataSet的排序

    http://eteda.iteye.com/blog/1141312 Delphi7中ClientDataSet的排序 博客分类: Delphi   1.控件ClientDataSet的属性Inde ...

  6. 【ABAP系列】SAP 读取生产订单 记入文档的货物移动明细

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 读取生产订单 记入文档的 ...

  7. OO第四单元单元总结

    目录 1.本单元两次作业的架构设计 2.四个单元中架构设计及OO方法理解的演进 3.测试理解与实践的演进 4.课程收获 5.给课程的改进建议 1.本单元两次作业的架构设计 第四单元的两次作业,我的表现 ...

  8. C# DropDownList绑定添加新数据的三种方法

    一.在前台手动绑定 <asp:DropDownList ID="DropDownList1" runat="server">    <asp: ...

  9. 记录将CentOS7linux系统python升级到3后yum安装是报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid syntax问题解决

    前两天将CentOS7里的python版本升级到了3.5.2 今天想装个解压软件,在执行yum install -y XXX 的时候报错 然后按照提示打开这个文件 vi /usr/bin/yum yu ...

  10. python程序daemon化

    1 直接空格加& python flask_server.py & 最简单的方式 这样还不行,不知道为什么flask server会自动退出. $ nohup python flask ...