我编写了以下Perl脚本(如下所示)以创建简单的XML文件。生成的输出有效,但我对生成的XML源代码有特定的格式要求。
如何更改脚本以添加我想要的空白?
#!/usr/bin/perl
use warnings;
use XML::LibXML;
my $doc = XML::LibXML::Document->new;
my $root = $doc->createElement('LEVEL1');
$doc->setDocumentElement($root);
my $system = $doc->createElement('LEVEL2');
$root->appendChild($system);
my $install = $doc->createElement('LEVEL3');
$system->appendChild($install);
print $doc->toString;
脚本输出:
<?xml version="1.0"?>
<LEVEL1><LEVEL2><LEVEL3/></LEVEL2></LEVEL1>
期望的输出:
<?xml version="1.0"?>
<LEVEL1>
<LEVEL2>
<LEVEL3/>
</LEVEL2>
</LEVEL1>
答案 0 :(得分:5)
请参阅toString
的文档print $doc->toString(1);
答案 1 :(得分:0)
您在示例1中列出的输出是正确的。标签和空格对XML没有任何意义;它们仅供人类使用,以便更容易看到结构。但是如果你仍然想做的是确保输出具有该结构,一种方法是用字符串(格式正确)而不是从零开始创建新的doc。
答案 2 :(得分:0)
我找到解决方案,我添加以下行
my @lines = split /\n/, $doc->toString(1);
shift @lines;
foreach (@lines) {
print "$_\n";
}
现在我得到了
<LEVEL1>
<LEVEL2>
<LEVEL3/>
</LEVEL2>
</LEVEL1>
答案 3 :(得分:0)
这不是你问题的答案(你已经有了)。我只是想 指出
xmllint - 命令行XML工具(来自libxml)
可能有助于完成打印,编码,验证等几个xml任务。 在这种情况下:
perl yourscript | xmllint --format -