0

如何使用 xml::twig 返回整个 xml 标记并将其保存到数组:

例如 :

my @array=();
my $twig = XML::Twig->new(
twig_handlers => {
'data'=> sub {push @array, $_->xml_string;}

});

此代码返回所有嵌套标签,但没有标签本身及其属性,是否可以选择使用 xml::twig 返回整个标签并将其保存到变量?

4

1 回答 1

5

使用 XML::Twigs 方法sprint而不是xml_string. 文档说:

xml_string @optional_options

Equivalent to $elt->sprint( 1), returns the string for the entire element, excluding the element's tags (but nested element tags are present)

搜索该sprint函数会产生:

短跑

Return the text of the whole document associated with the twig. To be used only AFTER the parse.

因此,您可以执行以下操作:

use strict;
use warnings;
use Data::Dumper;
use XML::Twig;

my @array=();
my $twig = XML::Twig->new(
twig_handlers => {
  'data'=> sub {push @array, $_->sprint;}
});

$twig->parse(qq~
  <xml>
        <data id="foo">
      <deep>
            <deeper>the deepest</deeper>
      </deep>
    </data>
  </xml>
~);

print Dumper \@array;

哪个打印:

$VAR1 = [
          '<data id="foo"><deep><deeper>the deepest</deeper></deep></data>'
        ];
于 2012-07-17T21:04:22.633 回答