Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用xslt将XML中的值附加到TestNG可通过电子邮件发送的HTML报告_Java_Xslt_Testng - Fatal编程技术网

Java 如何使用xslt将XML中的值附加到TestNG可通过电子邮件发送的HTML报告

Java 如何使用xslt将XML中的值附加到TestNG可通过电子邮件发送的HTML报告,java,xslt,testng,Java,Xslt,Testng,我只是有一些动态XML文件,其值如下: <testCaseId>CSPDDataObject [testCaseId=US_KINDLE_22, description=RISK with AUTH-fulfillment phase]</testCaseId> <message>Some logger details</message> <exception>java.lang.AssertionError: expected

我只是有一些动态XML文件,其值如下:

 <testCaseId>CSPDDataObject [testCaseId=US_KINDLE_22, description=RISK with AUTH-fulfillment phase]</testCaseId>
 <message>Some logger details</message>
 <exception>java.lang.AssertionError: expected [true] but found [false]</exception>
CSPDDataObject[testCaseId=US\u KINDLE\u 22,description=AUTH实现阶段的风险]
一些日志详细信息
java.lang.AssertionError:应为[true],但找到[false]
完整的XML结构:

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <FailedDetails>
    <FailedMessage>
        <testCaseId>US_KINDLE_TC1</testCaseId>
        <message> some logger</message>
        <exception>java.lang.AssertionError: expected [true] but found [false]
        </exception>
     </FailedMessage>
     <FailedMessage>
        <testCaseId>US_KINDLE_TC2</testCaseId>
        <message> some logger</message>
        <exception>java.lang.AssertionError: expected [true] but found [false]
        </exception>
    </FailedMessage>
       ......(n) (It repeats 'n' times)
  </FailedDetails>

美国KINDLE\u TC1
一些伐木工人
java.lang.AssertionError:应为[true],但找到[false]
美国KINDLE\u TC2
一些伐木工人
java.lang.AssertionError:应为[true],但找到[false]
……(n)(重复“n”次)
我只想将此值附加到以下标记中的现有testNG emailable report中:

 <h3> </h3><table> <tr> <td> need to append the above one with respective tag value</td></tr></table>
需要在上面的标签后面附加相应的标签值
截图:

这是现有html视图的示例快照。我只想在这个标记旁边添加xml值

可通过电子邮件发送的报告示例:


TestNG报告表{margin-bottom:10px;border-collage:collapse;空单元格:show}th,td{border:1px-solid}009;padding:25em.5em}th{vertical-align:bottom}td{vertical-align:top}表a{font-weight:bold}条带td{background color:#E6EBF9}.num text-align:right}.passedodd}背景色:{3F3}.passedeven背景色:{.skippededd td{背景色:#DDD}.skippedeventd{背景色:#CCC}.failededd td.attn{背景色:#F33}.failedeventd.stripe.attn{背景色:#D00}.stacktrace{空白:pre;字体系列:monospace}.totop{字体大小:85%;文本对齐:居中;边框底部:2px实心#000#测试#通过#测试#包括的组包括组TRANSFERMONY-SUITE4107103161540002521总计L410710318675分类方法开始时间(毫秒)转账资金SUITEKINDLEADERTEST&8212;failedcom.amazon.e2e.device.os221540236982369116625KindleReaderTest—;passedcom.amazon.e2e.device.os221540241421467218092KindleReaderTestcom.amazon.e2e.device.os22#KindleReaderTestParameter#1cspdataobject[testCaseId=US_kindle22,description=RISK with AUTH fulfillment phase]消息{
这里有一些信息
}Exceptionjava.lang.AssertionError:应为[true],但找到[false]


套件设置和拆卸
此xslt将读取html文件并将xml节点附加到表[@class='result']之后。在对html进行排序时,doctype将导致错误。因此,在运行xlst之前,请删除html中的第一行

XLS文件

<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://www.w3.org/1999/xhtml"
                xpath-default-namespace="http://www.w3.org/1999/xhtml">
    <xsl:output method="html" indent="yes" omit-xml-declaration="yes"
                doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
                doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" />
    <xsl:param name="failedxml.outputDir" />
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:variable name="doc" select="document($failedxml.outputDir)" />
    <xsl:template match="body/table[@class='result']">
        <xsl:copy-of select="."/>
        <xsl:for-each select="$doc/node()/child::element()">
            <table class="result">
                <tr class="param">
                    <th>Parameter #1</th>
                </tr>
                <tr class="param stripe">
                    <td> <xsl:value-of select ="child::element()[1]"/></td>
                </tr>
                <tr>
                    <th>Messages</th>
                </tr>
                <tr>
                    <td>
                        <div class="messages"><xsl:value-of select ="child::element()[2]"/></div>
                    </td>
                </tr>
                <tr>
                    <th>Exception</th>
                </tr>
                <tr>
                    <td>
                        <div class="stacktrace"><xsl:value-of select ="child::element()[3]"/></div>
                    </td>
                </tr>
            </table>

        </xsl:for-each>

    </xsl:template>
</xsl:stylesheet>

参数#1
信息
例外情况
我用gradle跑步的样子

configurations{ xslt }
dependencies {
    xslt    'net.sf.saxon:saxon:8.7'
}
task generateReport << {
    File reportDir=new File("${projectDir}/HTML_Reports")
    if(reportDir.exists()){
        reportDir.deleteDir()
    }
    reportDir.mkdir()

   File emailreport=new File("${projectDir}/emailable-report.html")
   // Write some script to remove DOCTYPE from html file before running xslt.

    ant.xslt(in: "${testReportDir.absolutePath}/emailable-report.html",
             style: "${projectDir.absolutePath}/merge_html.xsl",
             out: "${reportDir.absolutePath}/index.html",
             classpath: configurations.xslt.asPath) {
            param(name: 'failedxml.outputDir', expression:  "${projectDir.absolutePath}/failedtest.xml")
        }
配置{xslt}
依赖关系{
xslt'net.sf.saxon:saxon:8.7'
}

任务生成器报告你能从xml中添加你想要的确切的html吗?你只想把输入xml放入td,或者你想把它们作为每个不同的列作为单独的td?它只是简单的可通过电子邮件发送的报告html标记。我只想将整个xml追加到。我需要插入XML中的每个标记。就像第一个testcaseId第二个一样,还需要一个细节,如何重复?你能用两个testcase值和parent标记更新这个问题吗?因此,我们可以使用tr tag为重复行生成xsl更新详细信息。让我附上电子邮件报告我已经更新了xsl。请编写scipt从可发送电子邮件的html中删除doctype以忽略dtd reolver错误。非常感谢您的回复。让我看看这个。是否可以运行MAVEN而不是Gradle?是的,请使用此插件。在运行xslt之前,您应该用upvote:)写一些脚本从可编辑的html文件中删除DOCTYPE。