gpt4 book ai didi

perl - 读取和缩进 xml 文件 perl

转载 作者:行者123 更新时间:2023-12-05 01:05:06 25 4
gpt4 key购买 nike

我有以下 Perl 代码,它读取输入并正确缩进文件。由于 DTD 存在一些问题,我没有使用 xmllintXML-Tidy。但是假设我使用下面的代码进行练习:

 ### begin_: file metadata
### <region-file_info>
### main:
### - name : XMLPrettyPrint: simple xml pretty print in perl
### desc : use perl with XML::Twig library to print indented xml
### date : created="Thu 2005-12-01 11:08:15"
### last : lastmod="Thu 2005-12-01 11:22:34"
### lang : perl
### tags : perl xml indent formatted pretty string cfPrettyPrint
### </region-file_info>

### begin_: init perl
use strict;
use warnings;
use XML::Twig;

### begin_: init vars
my $sXML = join "", (<DATA>);

### init params
my $params = [qw(none nsgmls nice indented record record_c)];
my $sPrettyFormat = $params->[3] || 'none';

### begin_: process
my $twig= new XML::Twig;
$twig->set_indent(" "x2);
$twig->parse( $sXML );
$twig->set_pretty_print( $sPrettyFormat );
$sXML = $twig->sprint;

### begin_: output
print $sXML;

### begin_: sample data
1;
__END__
<table><tr age="35" >
<fname>Homer</fname>
<lname>Simpson</lname></tr>
<tr age="33" >
<fname>Barney</fname>
<lname>Rubble</lname></tr>
<tr age="29" >
<fname>Betty</fname>
<lname>Rubble</lname></tr></table>

它的缩进和打印是正确的……但是,我需要从 XML 文件中读取它,缩进,然后用新格式将其正确地返回到同一文件。我是 Perl 的新手,如何从文件而不是示例数据中读取输入,然后使用上面的代码缩进?谢谢

最佳答案

怎么样

my $file= $ARGV[0];
XML::Twig->new( pretty_print => 'indented')
->parsefile( $file )
->print_to_file( $file);

无需将缩进设置为 2 个空格,这是默认设置。末尾的 1 也不是必需的,只有模块才需要它,以通知解析器它们已正确加载。

这也等同于 xml_pp -i myfile.xml

关于perl - 读取和缩进 xml 文件 perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com