加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何更改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;

基本上你必须手动检查元素是否包含任何内容,然后将其设置为空元素.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读