在Perl中,如何在不更改XML文件格式的情况下更改XML文件中的元素?

前端之家收集整理的这篇文章主要介绍了在Perl中,如何在不更改XML文件格式的情况下更改XML文件中的元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个格式的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.除非这是一个你必须处理的一次性问题,否则值得研究一些功能更强大,更适合的模块.

猜你在找的Perl相关文章