Hi

If you set the 'forcearray' option to true when you call XMLin()
then XMLout() will be able to remember which values were 
attributes and which were nested elements.  However the order
of the elements will be lost due to things being stored in a
hashref.  Of course with everything in an array, you'll need to
say:

  $opml->{head}->[0]->{title}->[0];

instead of:

  $opml->{head}->{title};

XMLout() also has a 'noattr' option if you always want to use
nested elements rather than attributes but in your case you need
both.

If the element order is critical to your application, XML::Simple
is not likely to prove suitable.

You might want to take a look at XML::XPath.

Regards
Grant

=====================================================================
Grant McLean       | email: [EMAIL PROTECTED] | Lvl 6, BP House
The Web Limited    | WWW:   www.web.co.nz    | 20 Customhouse Quay
Internet Solutions | Tel:   +64 4 495 8250   | Box 1195, Wellington
Awesome service    | Fax:   +64 4 495 8259   | New Zealand



> -----Original Message-----
> From: Morbus Iff [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, February 01, 2001 12:38 PM
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: XML::Simple and Attribute/Non-Attribute Output...
> 
> 
> I'm hoping to use XML::Simple to read in and out OPML 
> formatted documents.
> Very roughly, they look like:
> 
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <opml version="1.0">
>       <head>
>               <title>mySubscriptions</title>
>               <dateCreated>Fri, 05 Jan 2001 02:22:28 GMT</dateCreated>
>               <dateModified>Mon, 29 Jan 2001 17:29:01 
> GMT</dateModified>
>               <ownerName>Morbus Iff</ownerName>
>               <ownerEmail>[EMAIL PROTECTED]</ownerEmail>
>               <expansionState></expansionState>
>               <vertScrollState>1</vertScrollState>
>               <windowTop>294</windowTop>
>               <windowLeft>319</windowLeft>
>               <windowBottom>494</windowBottom>
>               <windowRight>704</windowRight>
>       </head>
>       <body>
>               <outline text="freshmeat.net" description="the
> one-stop-shop for all your Linux software needs"
> htmlUrl="http://freshmeat.net" language="unknown" 
> title="freshmeat.net"
> type="rss" version="RSS" 
> xmlUrl="http://freshmeat.net/backend/fm.rdf"/>
>       </body>
> </opml>
> 
> Sucking this document in through XML::Simple using the 
> defaults is fine.
> Throwing it out correctly creates the outline attributes in a random
> order... But, it also attributes all of the entities in <head> like:
> 
>   <head vertScrollState="1" title="mySubscriptions" windowLeft="319"
> ownerEmail="[EMAIL PROTECTED]" windowRight="704" 
> dateCreated="Fri, 05 Jan
> 2001 02:22:28 GMT" windowTop="294" ownerName="Morbus Iff"
> windowBottom="494" dateModified="Mon, 29 Jan 2001 17:29:01 GMT">
>     <expansionState></expansionState>
>   </head>
> 
> Is it possible for me to output the OPML the right way using some of
> XML::Simple's magic config options? I've been messing with 
> keyattr, and
> similar, but haven't had any luck.
> 
> Likewise, if anyone know of an OPML read/writer in Perl, I'd 
> be obliged for
> knowledge.
> 
> -- 
> Morbus Iff
>                  We have QuadrapalegicMorbus - able to lay 
> still on tall
>    o-/----'   servers for days at a time, slower than 
> Christopher Reeve at
>                 a full roll, smells stronger than 128 
> poobits. Defender
>                      of Bedsores, Boredom and Bedpans of Shat...
>                    Devil Shat: <http://www.disobey.com/devilshat/>
> 
> -02--- <\/> ---- <http://www.disobey.com/> --- Bad Ascii, 
> Short Notice ----
> 
> _______________________________________________
> Perl-XML mailing list
> [EMAIL PROTECTED]
> http://listserv.ActiveState.com/mailman/listinfo/perl-xml
> 

Reply via email to