#!/usr/local/bin/perl -w use strict; use XML::Simple; local $/=undef; my $input=<DATA>; my $xml=XMLin($input, 'forcearray' => 1); $xml->{'fields'}->[0]{'field'}{$_}{'number'}->[0] += 10 for keys %{$xm +l->{'fields'}->[0]{'field'}}; print XMLout($xml, 'rootname' => 'data'); __DATA__ <data> <fields> <field name="foo"> <number>2</number> <required>Y</required> </field> <field name="bar"> <number>1</number> <required>N</required> </field> </fields> </data> _END__ <data> <fields name="field"> <bar> <number>11</number> <required>N</required> </bar> <foo> <number>12</number> <required>Y</required> </foo> </fields> </data>
Update: grantm beat me to the punch :). He's also using better options than me - my code mangles other parts of the XML structure. Better code is (only relevant lines shown):
Which actually works :)my $xml=XMLin($input, 'forcearray' => [('number','required')]); $xml->{'fields'}{'field'}{$_}{'number'}->[0] += 10 for keys %{$xml->{' +fields'}{'field'}}; print XMLout($xml, keyattr => {field => 'name'}, 'rootname' => 'data') +;
CU
Robartes-
In reply to Re: Edit values in XML and Save?
by robartes
in thread Edit values in XML and Save?
by Cody Pendant
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |