我想写一个脚本来从文本文件中读取并将其转换为基于JUnit格式的XML。类似于这样的文本文件输出:如何将柱状文本文件转换为XML?
TEST TITLE GROUP PRIO R-STAT R-TIME VERDICT VERDICT-TEXT
------------------------- ---------------------------------------- -------- ---- ------ ------------ -------- --------------------------------------------------
Telex Telex type GROUP1 1 PASS 00:00:02.914 PASS Over
Time Timer GROUP2 1 PASS 00:00:06.619 PASS Over
这是我期待上面的文本文件输出:
<?xml version="1.0" encoding="utf-8"?>
<testsuites name="HostTests for Character" tests="TestSuite" time="">
<testsuite name="GROUP1" package="GROUP1" tests="" errors="">
<testcase classname="GROUP1.Telex" name="Telex type" time="" status="">
<skipped/>
<error message="" type=""/>
<failure message="" type=""/>
<system-out/>
<system-err/>
<testcase/>
<testcase classname="GROUP2.Time" name="Timer" time="" status="">
<skipped/>
<error message="" type=""/>
<failure message="" type=""/>
<system-out/>
<system-err/>
<testcase/>
<textsuite/>
<testsuites/>
如何我写一个Perl脚本在詹金斯执行此?
我也试过:
#!/usr/bin/perl
use strict;
use warnings;
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $textroot = $xslt ->parse_verdict_file("\\\~/jenkins/workspace/HostTestOAM/trunk/nash/test/regression/logs/verdict.1.txt");
my $checker = 1;
my @txtfile = logj('logs/verdict*.txt');
foreach (@txtfile){
my $txtfile = $_;
$txtfile =~ s/([()])/\\$1/g;
$txtroot2 = "\\\~/jenkins/workspace/HostTestOAM/trunk/nash/test/regression/logs/$txtfile";
my $source = $parser->parse_file($txtroot2);
my $results = $textroot->transform($source);
my $xmlparsed = "\\\~/jenkins/workspace/HostTestOAM/trunk/nash/test/regression/logs/results$checker.xml";
unless(open FILE, '>'.$xmlparsed) {
die "\Creating failed\n";
}
$textroot -> output_file($results, FILE);
close FILE;
$checker++;
}
您需要提供某种您试图实施的代码。人们不会为你做这件事。我明白,如果你不知道自己在做什么,这可能会很困难,但从一个基本的例子开始,继续前进。 – 2013-05-08 06:31:22
我很抱歉我的错误。下面是我试过的代码: – 2013-05-08 07:01:55
我编辑上面史蒂夫:) – 2013-05-08 07:13:07