我有一个 XML 文件,我想读取它 - 删除一个节点 - 保存它。
我从终端运行 perl (perl script.pl)
XML 示例(文件名.xml):
<?xml version="1.0" encoding="UTF-8"?>
<twice>
<inner>
<twice>
<name>John</name>
<surname>Smith</surname>
</twice>
<twice>
<name>Alan</name>
<surname>Bowler</surname>
</twice>
<twice>
<name>Michael</name>
<surname>Deck</surname>
</twice>
</inner>
</twice>
Perl 脚本示例 (script.pl):
use strict;
use warnings;
use XML::LibXML;
my $filename = "filename.xml";
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);
for my $dead ($xmldoc->findnodes(q{/twice/inner/twice[surname = "Bowler"]})) {
$dead->unbindNode;
}
print $xmldoc->toString;
现在它在终端中输出预期结果,但不保存文件。
预期结果(文件名.xml):
<?xml version="1.0" encoding="UTF-8"?>
<twice>
<inner>
<twice>
<name>John</name>
<surname>Smith</surname>
</twice>
<twice>
<name>Michael</name>
<surname>Deck</surname>
</twice>
</inner>
</twice>
我已经搜索了好几个小时,但找不到任何内容,如果重复的话,抱歉!
这是我第一次使用 Perl,所以欢迎任何帮助,谢谢。
当使用 toString 时,文档说要这样做:
open my $out_fh, '>', 'somefile.xml';
print {$out_fh} $xmldoc->toString;
您还可以使用toFile()
保存它的函数:
$xmldoc->toFile("someFile.xml");
编辑:还要引用文档(这就是我所做的),您可以将格式参数传递给这些函数。
如果 $format 为 0,则文档将按原来的样子转储
解析的
如果 $format 为 1,libxml2 将添加可忽略的空格,因此节点
内容更容易阅读。现有的文本节点不会改变
如果 $format 为 2(或更高),libxml2 将充当 $format == 1 但它
向每个文本节点添加前导和尾随换行符。
给你:
$xmldoc->toFile("someFile.xml", $format);
or
print {$out_fh} $xmldoc->toString($format);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)