如何从XML :: Simple :: XMLout压缩XML?

Ale*_*ini 2 xml perl whitespace xml-simple

我使用XML :: Simple来解析和编辑一个非常大的XML文件,速度是必不可少的(到目前为止,我已经尝试过所有方法的XML :: Simple是最快的)

现在,一旦我的所有编辑完成,我使用XMLout()将XML打印到文档,尽管它使用适当的缩进打印它,如果这是人类读取但在我的情况下完全没用的话.

没有空格的输出文件是1.2 Mb,白色空间是15 Mb.

我一直在使用:

my $string = XMLout($data);
$string =~ s/>[\s]*</></g;
print $out $string;
Run Code Online (Sandbox Code Playgroud)

但它似乎不仅是一个极端的CPU占用并且需要大量的内存.

他们是一种简单地将我的XML对象作为正确的XML输出而没有所有无用空白的方法吗?

谢谢

jir*_*ira 8

查看NoIndent选项:从XML :: Simple手册页:

NoIndent => 1#out - 很少使用

将此选项设置为1可禁用"XMLout()"的默认"漂亮打印"模式.启用此选项后,XML输出将全部在一行上(除非数据中有换行符) - 这可能更容易进行下游处理.

NormaliseSpace =>0│1│2#in-handy

此选项控制如何处理文本内容中的空格.该选项的公认价值是:

  • 0 =(默认)空格未经改变地传递(当然,除了XML建议规定的属性值中的空格的规范化)

  • 1 =空格在用作哈希键的任何值中被标准化(标准化意味着删除前导和尾随白色 - 并且将空白字符的序列折叠到单个空格)

  • 2 =在所有文本内容中规范化空格

    注意:如果对您来说更自然,您可以使用'z'拼写此选项.