-1
  <test name="">
  <class name="48.">
  </class>
  </test>

上記のエントリはファイルに約 4 回含まれており、これらのエントリをファイルから削除したいので、次のロジックを使用しています。

#!/usr/bin/perl
$count=0;
open (FILE, '/tmp/uday/testng-results.xml');
my@lines = <FILE>;
for(my $i=0;$i<$#lines;$i++)
{
    if($lines[$i] =~ /<test name="">/)
    {
        $count++;
    }
}
print "$count\n";
while($count!=0)
{
    open (FILE, '/tmp/uday/testng-results.xml');
    my  @lines = <FILE>;
    for(my $i=0;$i$#lines;$i++)
    {
        if($lines[$i] =~ /<test name="">/)
        {
            print "Start line number $i\n";
            $Start=$i;
            $End=$i+4;
            print "$End Line number End\n";
            system("sed -i '$Start,$End d' testng-results.xml");
        }
    }
    $count--;
} 

それを行うためのより良い方法はありますか?

4

1 に答える 1

0

XML::LibXMLのラッパーであるXML ::XSH2を使用します。

open /tmp/uday/testng-results.xml ;
remove //test[@name=""][class[@name="48."]] ;
save :b ;
于 2013-07-25T13:17:41.623 に答える