in reply to XML::Simple $elt->noattr is there an equivalent using XML::Twig

First question : Why do I have element 'opt' not myconfig_data at the docroot level ?

You need to use the KeepRoot option I think.

More generally, using simplify in XML::Twig is a 1 way street: you can get a data structure from an element, but there is no going back. The method is designed to help people used to XML::Simple to be able to use techniques they are familiar with, when extracting data from XML. If you want to work with the twig and turn attributes into elements, then you will have to do it yourself:

#totally untested! sub att_to_children { my( $elt)= @_; foreach my $att ($elt->att_names) { $elt->insert_new_elt( last_child => $att, $elt->att); } $elt->del_atts; }
  • Comment on Re: XML::Simple $elt->noattr is there an equivalent using XML::Twig
  • Download Code

Replies are listed 'Best First'.
Re^2: XML::Simple $elt->noattr is there an equivalent using XML::Twig
by Anonymous Monk on Mar 01, 2006 at 11:23 UTC
    Thanks, KeepRoot works fine, but is for XML::Simple only..

    The example works OK ( need to use $elt->{att'}->{$att} for a value though ) - is this the same as the method 'att_to_field' ?

    ( I think so having looked at the code but would like to confirm still being a newbie )

    Thanks

      need to use $elt->{att'}->{$att} for a value though

      Actually $elt->att( $att) is what you want, to use an accessor instead of assuming that the attributes are in a hash (they are) and will always be (there is no guarantee about that anywhere in the docs). (end of the rant ;--)

      is this the same as the method 'att_to_field'

      Yes it is! And I had completely forgotten about this method. Thanks for reminding me of its existence. That will teach me to write more methods than can fit in my head.