XMLUtil
阅读原文时间:2023年07月12日阅读:1

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("文件夹内容为空");  
    }  
}  

}