java循环xml文件的单个节点

时间:2017-02-09 07:38:30

标签: java xml

我有以下xml

<?xml version="1.0"?>
<testsuites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <testsuite tests="4" failures="3" errors="0" package="HPToolsFileSystemRunner">
 <testcase name="C:\HMS\Functional\Functional_Apply_Leave" report="C:\HMS\Functional\Functional_Apply_Leave\Report" time="138.878906" classname="All-Tests.C:\HMS\Functional" status="fail">
  <failure message="Test failed" />
</testcase>
<testcase name="C:\HMS\Functional\Functional_Overtime_Request" report="C:\HMS\Functional\Functional_Overtime_Request\Report" time="143.9445962" classname="All-Tests.C:\HMS\Functional" status="fail">
  <failure message="Test failed" />
</testcase>
</testsuite>
</testsuites>

我想使用java只在testcase状态中循环。如果状态通过,我想执行方法1,如果状态失败,我想使用java .........................执行方法2。 .................................................. .................................................. .................................................. ..................我写的代码如下 它打印所有属性

 private static void loopNode(NodeList nodeList) {

for (int count = 0; count < nodeList.getLength(); count++) {

Node tempNode = nodeList.item(count);

// make sure it's element node.
if (tempNode.getNodeType() == Node.ELEMENT_NODE) {

    // get node name and value
    System.out.println(tempNode.getNodeName());
    System.out.println(tempNode.getTextContent());

    if (tempNode.hasAttributes()) {

        // get attributes names and values
        NamedNodeMap nodeMap = tempNode.getAttributes();

        for (int i = 0; i < nodeMap.getLength(); i++) {

            Node node = nodeMap.item(i);
            System.out.println(node.getNodeName());
            System.out.println(node.getNodeValue());

        }

    }

    if (tempNode.hasChildNodes()) {

        // loop again if has child nodes
    loopNode(tempNode.getChildNodes());

    }

    System.out.println(tempNode.getNodeName());

}

}

2 个答案:

答案 0 :(得分:0)

看看XStream http://x-stream.github.io/ 它将您的xml结构映射到适当的java对象。

然后,您可以显式提取XML表示对象的“TestCases-List”并执行所需的逻辑。

答案 1 :(得分:0)

你差不多完成了。

使用此for循环可根据条件执行方法。

Process myProcess = new Process();

myProcess.StartInfo.Arguments = args;
myProcess.StartInfo.FileName = exe;