【发布时间】:2017-02-27 11:18:48
【问题描述】:
我在 Perl 中使用XML::Writer 创建了一个 XML 文件,我希望每次调用我的脚本时,它都会在旧文件的开头写入新的 XML 文件。我知道如何在文件的开头写一行,但是使用 XML::Writer 我找不到如何做到这一点。
my $output = new IO::File(">>tmp.xml");
my $writer = new XML::Writer(
OUTPUT => $output,
DATA_INDENT => 3, # indentation, trois espaces
DATA_MODE => 1, # changement ligne.
);
这是我编写 xml 文件的脚本的开头。
编辑:
我实际上做了一个看起来像这样的changelog.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="changelog.xsl" type="text/xsl"?>
<root text="MultiDiag">
<version number="V: 7.07.10.0" date="Release date (Fri Oct 7 14:44:52 2016)">
Things
</version>
</root>
我想要的是每天,新的更新日志都写在旧日志的顶部:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="changelog.xsl" type="text/xsl"?>
<root text="MultiDiag">
<version number="V: 7.07.10.0" date="Release date (The new one)">
Things
</version>
<version number="V: 7.07.10.0" date="Release date (The old one)">
Things
</version>
</root>
【问题讨论】:
-
欢迎使用 Stack Overflow 和 Perl 标签。您能否举例说明您希望输出是什么样的?你可以edit你的问题。通常在一个文件中有一种 XML 数据结构。总有一个元素围绕着一切。不清楚你写到顶部是什么意思。
-
根据定义,这几乎是无效的 XML,因为您没有正确的根标签。
-
请不要使用间接宾语表示法。在某些时候,您会因它导致的错误而绊倒,并且会浪费数小时试图找到它。您应该使用
IO::File->new(...)和XML::Writer->new(...),而不是new IO::File(..)和new XML::Writer(...)。 -
感谢 Dave 的提示,我会这样做的。