【问题标题】:Perl insert new element into array subarrayPerl将新元素插入数组子数组
【发布时间】:2013-01-24 21:21:42
【问题描述】:

您好,我正在尝试插入一个新元素,以便我从此开始

   <explicit-group name="CDEV">
      <aip-address>1.1.1.1</aip-address>
      <aip-address>2.2.2.2</aip-address>
      <aip-address>3.3.3.3</aip-address>

到这里

   <explicit-group name="CDEV">
      <aip-address>1.1.1.1</aip-address>
      <aip-address>2.2.2.2</aip-address>
      <aip-address>3.3.3.3</aip-address>
      <aip-address>99.99.99.254</aip-address>

我拥有的代码如下,但我已经阅读了两天的引用和取消引用,但仍然无法得到它。我是在尝试做一些不可能的事情,还是有人可以告诉我如何做。

谢谢!

use strict;
use XML::Simple;
use Data::Dumper;
my $xs = XML::Simple->new(
  XMLDecl => '<?xml version="1.0" encoding="UTF-8"?>',
  forcearray => [ 'item' ],
  keyattr    => {   },
  rootname   => 'SG-distribution',
);

my $opt = $xs->XMLin(\*DATA);


push @{ $opt->{'sa-coller'}->{'explicit-group'} } , { {'CDEV'}->{'aip-address'} };

print Dumper($opt);
print $xs->XMLout($opt);

__DATA__
<?xml version="1.0" encoding="UTF-8"?><SG-distribution>
  <sa-coller name="W8-C1" enabled="true" host="localhost" port="99">
    <ip-group name="home" ipAddressMask="192.168.0.*" match="glob"/>
    <ip-group name="home2" ipAddressMask="10.0.0.*" match="glob"/>
    <explicit-group name="CDEV">
      <aip-address>1.1.1.1</aip-address>
      <aip-address>2.2.2.2</aip-address>
      <aip-address>3.3.3.3</aip-address>
    </explicit-group>
    <explicit-group name="HYU"/>
    <explicit-group name="JUN"/>
  </sa-coller>
</SG-distribution>

【问题讨论】:

    标签: xml arrays perl hash


    【解决方案1】:

    您有一个包含四个元素的数组,每个元素代表explicit_group 元素。您想识别名称属性为CDEV 的那个。由于它们不是按名称(而是按位置)索引的,因此您需要遍历数组以找到正确的元素。

    for my $explicit_group (@{ $opt->{'sa-coller'}{'explicit-group'} }) {
      if ($explicit_group->{name} eq 'CDEV') {
         push @{ $explicit_group->{'aip-address'} }, '99.99.99.254';
       }
    }
    

    【讨论】:

    • 谢谢你 ikegami 这正是我想要做的。
    猜你喜欢
    • 2013-06-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多