in reply to (jeffa) Re: Ordered XML items (XML::Simple?)
in thread Ordered XML items (XML::Simple?)

Thanks jeffa. I had tried something similar, but instead of forcearray=>1 I used forecarray['lists']. I could not get it to work. Unfortunately this solution fails on
<lists> <list name="one" params="456">First</list> <flag name="two" params="123">Second</flag> <list name="three" params="abc">Third</list> <lists>
When I tried it like this, it separated the lists and the flag into separate hashes in the array. I want the user to be able to specify any order (and there will be other tags, e.g. entry, title.

--traveler

Replies are listed 'Best First'.
(jeffa) 3Re: Ordered XML items (XML::Simple?)
by jeffa (Bishop) on Jan 17, 2003 at 17:08 UTC
    Looks like the problem is in the design and not the tool. Question: are lists, entries, and titles types of tags, or are they something else? If you want them to be tags, then make them common tags that can have different attributes:
    <?xml version="1.0" encoding="UTF-8"?> <tags> <tag type="title" params="blah">Zero</tag> <tag type="list" params="123">First</tag> <tag type="entry" params="456">Second</tag> <tag type="flag" params="123">Third</tag> </tags>
    When run through the same code, this output is generated:
    $VAR1 = { 'tags' => [ { 'tag' => [ { 'params' => 'blah', 'content' => 'Zero', 'type' => 'title' }, { 'params' => '123', 'content' => 'First', 'type' => 'list' }, { 'params' => '456', 'content' => 'Second', 'type' => 'entry' }, { 'params' => '123', 'content' => 'Third', 'type' => 'flag' } ] } ] };
    There are advantages to both approaches. This approach allows you to preserve the order of your 'tags', but the other approach allows you to drill-down to a specific list of tags in O(1).

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    
      Thanks, jeffa. I thought I'd tried that, but apparently not exactly that... Anyway, that will work. I'm glad to still be able to use a tool I'm used to. Since this is only parsed once in the application, it is ok to have to dig deeper for the data.

      --traveler