2012-07-17 125 views
0

返回整個標籤我如何可以用XML ::嫩枝返回完整的XML標籤並將其保存到數組:使用XML ::嫩枝

例如:

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

}); 

此代碼返回所有的嵌套標籤,但沒有標籤本身和它的屬性是否有一個選項返回整個標籤使用xml :: twig並將其保存爲變量?

+0

能否請您提供一些輸入工作的例子嗎? – simbabque 2012-07-17 20:53:46

+0

沒關係。我自己做了一些。 – simbabque 2012-07-17 21:05:02

回答

5

使用XML :: Twigs方法sprint而不是xml_string。該docs說:

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>' 
     ];