加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:15:24 所属栏目:大数据 来源:网络整理
导读:我有一个格式的XML文件: outer1 inner1 nameStonecold/name professionwarrior/profession orgwwf/org /inner1 inner1 nameShanebond/name professionBowler/profession orgnewzealand/org /inner1 inner1 namebrain schemidit/name professionChairman/pro
我有一个格式的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.除非这是一个你必须处理的一次性问题,否则值得研究一些功能更强大,更适合的模块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读