在XML文件标记中添加空格

时间:2014-08-25 05:27:15

标签: xml perl xml-twig

我有一个要求,我需要提取Powerpoint文本。每个东西都工作得很好,因为perl脚本能够读取<a:t></a:t>标签。但它无法在文字后留出空格。以下是详细说明: file.xml

<a:t>Stack</a:t>
<a:t>Overflow</a:t>

正在打印的输出是 StackOverflow 。我想要的是 Stack Overflow

以下是我正在使用的代码:

#!/usr/bin/perl
use strict;
use warnings;

use Archive::Zip qw( :ERROR_CODES );
use XML::Twig;
my @text;

my $file = "test_server-1.pptx";
my $zip  = Archive::Zip->new();
$zip->read($file) == AZ_OK or die "Unable to open Office file\n";
my @slides = $zip->membersMatching("ppt/slides/slide.+\.xml");

#print @slides;
for my $i ( 1 .. scalar @slides ) {    # to sort them.
    my $content = $zip->contents("ppt/slides/slide${i}.xml");

    my $twig = XML::Twig->new(
        keep_encoding => 1,
        twig_handlers => { 'a:t' => \&topicref_processing, },
    );
    $twig->parse($content);
}

sub topicref_processing {
    my ( $twig, $ppttext ) = @_;
    print $ppttext->text();
}

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

如果你想要人工空白,你可以简单地添加它:

sub topicref_processing {
    my($twig, $ppttext) = @_;   
    print $ppttext->text(), " ";
}