我有一个格式的XML文件:
<outer1> <inner1> <name>Stonecold</name> <profession>warrior</profession> <org>wwf</org> </inner1> <inner1> <name>Shanebond</name> <profession>Bowler</profession> <org>newzealand</org> </inner1> <inner1> <name>brain schemidit</name> <profession>Chairman</profession> <org>Google</org> </inner1> </outer1>
我想将Shanebond的价值改为Shane Bond.
我使用XML :: Simple,但结果是哈希.
<outer1> <inner1> <name>Stonecold</name> <profession>warrior</profession> <org>wwf</org> </inner1> <inner1> <name>Shane Bond</name> <profession>Bowler</profession> <org>newzealand</org> </inner1> <inner1> <name>brain schemidit</name> <profession>Chairman</profession> <org>Google</org> </inner1> </outer1>
请告知如何做到这一点.
提前致谢.
解决方法
XML::Simple
提供了一些选项,允许您指定如何将输入转换为Perl数据结构以及如何输出该结构:
#!/usr/bin/perl use strict; use warnings; use XML::Simple; my $xml_file = 'b.xml'; my $xml = XMLin( $xml_file,KeepRoot => 1,ForceArray => 1,); $xml->{outer1}->[0]->{inner1}->[1]->{name} = 'Shane Bond'; XMLout( $xml,NoAttr => 1,OutputFile => $xml_file,);
如果您做任何有趣的事情,XML::Simple
确实会有点毛茸茸,因为它的目的不是成为通用XML库,而是提供一种简单的方法来处理用XML编写的配置文件.
CPAN有过多的XML related modules.除非这是一个你必须处理的一次性问题,否则值得研究一些功能更强大,更适合的模块.