1

我有一个 XML 文件。文件中有一些空白行。我怎样才能只删除空行?我尝试chomp()了方法,发现它将删除所有新行符号。我仍然需要输出标准的 XML 文件格式。

while(my $line = <$fh>) {

        #chomp($line);
        #$line =~ s/\s+//g;
        print $line;
}

__DATA__
    <item>

      <key>AB</key>

      <info>

        <format>10</format>

        <description>Any binary string</description>

        <value>NA</value>

        <whereUsed>A2B25,A2B26</whereUsed>

      </info>

    </item>

下面的输出形式是预期的。

<item>
  <key>AB</key>
  <info>
    <format>10</format>
    <description>Any binary string</description>
    <value>NA</value>
    <whereUsed>A2B25,A2B26</whereUsed>
  </info>
</item>
4

3 回答 3

8

在您的循环中,在打印之前:

next unless $line =~ /\S/;
于 2010-12-29T06:54:00.010 回答
3

只有当它具有非空格字符时,您才能打印该行:

while(my $line = <DATA>) {
        print $line if ($line=~/\S/);
}
于 2010-12-29T06:56:08.177 回答
2

老实说,我不建议这样做chomp,而只是使用解析器解析和重新格式化您的 XML。

use XML::Twig;
XML::Twig->new( 'pretty_print' => 'indented_a' )->parse( \*DATA )->print;

这会读取、验证您的 XML 并重新格式化输出。

于 2015-06-29T09:57:40.927 回答