XML :: Twig在封闭>之前添加空间

时间:2018-08-07 11:30:56

标签: perl xml-twig

我有:

<data id="010" name="Common"  action="text"> 
...
</data>

如何使用XML :: Twig在“>”之前添加空间,例如:

<data id="010" name="Common"  action="text" > 

</data>

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

这不是很漂亮,但是您可以更改XML :: Twig输出开始标签的方式。 方法为start_tag,格式为XML :: Twig :: Elt;

最干净的方法是将XML :: Twig :: Elt子类化(如下面的代码中的my_elt)并更改原始start_tag方法的输出:

#!/usr/bin/env perl

use strict;
use warnings;

use XML::Twig;
# elements will be created as "my_elt" instead of XML::Twig::Elt                      
my $t= XML::Twig->new( elt_class => 'my_elt')  
                ->parse( '<data id="010" name="Common"> text </data>')
                ->print;


# create a new class, based on 'XML::Twig::Elt'
package my_elt;
use base 'XML::Twig::Elt';

# my_elt only tweaks start_tag
sub start_tag
  { my $s= shift->SUPER::start_tag(); # get the original start tag
    $s=~ s{(>\s*)$}{ $1}s;            # replace the last '>' by ' >'
    return $s;                        # voilà!
  }