That's something I'd like to have in a class.
package ChargeTypeXML;
sub new
{
my $class = shift;
my %args = shift;
my $ref = XMLin($args->{file}, KeyAttr => { charge => "code"});
my %hash =
map { ($_, $ref->{charge}->{$_}->{name}) } keys %{$ref->{charge}};
$ref = \%hash;
bless $ref, $class;
return $ref;
}
sub toXML
{
print qq{<?xml version="1.0" encoding="UTF-8" ?>\n};
print qq{<charge-type-control>\n};
for keys ( %{$self} )
{
print qq{<charge code="$_" name="}, $self->{$_}, qq{frtamt"/>\n};
}
print qq{</charge-type-control>};
}
1;
#in the script:
use ChargeTypeXML;
my $xml = ChargeTypeXML->new (file=>"xmlfile");
Of course this only works, when all "codes" in the xml are unique.
Note: untested
|