如何使用XSLT根据XML文件中的值计数更改属性值

时间:2018-12-18 09:48:20

标签: java xml xslt

我有以下示例XML文件,我只需要根据XML中的“状态”值更改testng-results标记值,例如已通过,失败,已跳过

示例输入

<?xml version="1.0" encoding="UTF-8"?>
  <testng-results skipped="0" failed="0" total="10" passed="10">
    <test-method status="FAIL" is-config="true" duration-ms="4"
        started-at="2018-08-16T21:43:38Z" finished-at="2018-08-16T21:43:38Z">
        <params>
            <param index="0">
                <value>                <![CDATA[org.testng.TestRunner@31c2affc]]>
                </value>
            </param>
        </params>
        <reporter-output>
        </reporter-output>
     </test-method> <!-- setParameter -->
      <test-method status="PASS" is-config="true" duration-ms="4"
        started-at="2018-08-16T21:43:38Z" finished-at="2018-08-16T21:43:38Z">
        <params>
            <param index="0">
                <value>                <![CDATA[org.testng.TestRunner@31c2affc]]>
                </value>
            </param>
        </params>
        <reporter-output>
        </reporter-output>
     </test-method> <!-- setParameter -->
      <test-method status="SKIPPED" is-config="true" duration-ms="4"
        started-at="2018-08-16T21:43:38Z" finished-at="2018-08-16T21:43:38Z">
        <params>
            <param index="0">
                <value>                <![CDATA[org.testng.TestRunner@31c2affc]]>
                </value>
            </param>
        </params>
        <reporter-output>
        </reporter-output>
     </test-method> <!-- setParameter -->
  </testng-results>

对于上述示例,我们具有一个PASS,FAIL和SKIPPED状态()。首先,我们需要在输入的XML文件中获得PASS,FAIL,SKIPPED的计数   并相应地更改testng-results标签中的值。上面的有效负载标签值的输出应更新如下:

 <testng-results skipped="1" failed="1" total="3" passed="1">

“总计”是所有人的状态。

是否可以通过使用XSLT来实现?

1 个答案:

答案 0 :(得分:0)

您可以简单地使用:

<testng-results skipped="{count(//test-method/@status='SKIPPED')}" failed="{count(//test-method/@status='FAIL')}" total="{count(//test-method)}" passed="{count(//test-method/@status='PASS')}">