如何更改XML以使用空元素标签?
发布时间:2020-12-16 23:16:05 所属栏目:百科 来源:网络整理
导读:我是 XML::Twig的新手.如何更改所有空元素以使用空元素标签( foo /)而不是start-tag和end-tag组合( foo / foo)? 输入: book given-namesMauricexref ref-type="fn" rid="fnI_1"/xref/given-names colspec colname="col1" colnum="1"/colspec entry align="
我是
XML::Twig的新手.如何更改所有空元素以使用空元素标签(< foo />)而不是start-tag和end-tag组合(< foo>< / foo>)?
输入: <book> <given-names>Maurice<xref ref-type="fn" rid="fnI_1"></xref></given-names> <colspec colname="col1" colnum="1"></colspec> <entry align="left"><p></p></entry> </book> 我需要输出为: <book> <given-names>Maurice<xref ref-type="fn" rid="fnI_1"/></given-names> <colspec colname="col1" colnum="1"/> <entry align="left"><p/></entry> </book> 我试过了: use XML::Twig; my $xml = XML::Twig->new(twig_handlers => { 'xref' => sub {$_->set_tag('#EMPTY'),},pretty_print => 'indented',); $xml->parse('sample.xml'); $xml->print; } 但我无法处理它.如何在没有内容标签的情况下全面改变空标签?我该怎么改变? 解决方法
如果你想坚持使用Twig,你可以这样做:
#!usr/bin/perl use strict; use warnings; use XML::Twig; my $xml = XML::Twig->new(twig_handlers => { 'p' => sub { if (!$_->first_child()) { $_->set_content('#EMPTY') } },empty_tags => 'normal' ); $xml->parsefile('file.xml'); $xml->print; 基本上你必须手动检查元素是否包含任何内容,然后将其设置为空元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |