我只需要删除XML文件中的一些标记。
XML:

<p>Originally published <xref ref-type="bibr" rid="ref155">Klein, F. (1978)</xref> <i>Priam Books. Reproduced by permission of the author.</p>

脚本:
use XML::Twig;
my $xml_twig_content = XML::Twig->new(
keep_encoding => 1,
twig_handlers => {
keep_atts_order => 1,
'xref' => \&xref,
},
pretty_print => 'indented',
);
$xml_twig_content->parsefile('sample.xml');

sub xref {
 my ($xml_twig_content, $xref) = @_;
 my $XrefName = $xref->att('ref-type');
 if ($XrefName =~ /^bibr$/si){
 $xref->delete;
 }
}

我得到了输出:
<p>Originally published <i>Priam Books. Reproduced by permission of the author.</p>

我需要输出:
<p>Originally published Klein, F. (1978) <i>Priam Books. Reproduced by permission of the author.</p>

如何删除外部参照标记并保留其内容?

最佳答案

您可以使用erase-method
erase
删除元素:删除元素并将其所有子元素粘贴到其位置。
这是您使用它的sub

sub xref {
  my ( $twig, $xref ) = @_;
  $xref->erase;
}

注意,对我来说,您的示例xml没有解析,因为<i>没有关闭。

09-05 04:37