Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: XML::Simple how do i keep the same xml format (Values and Attributs)?

by tobias_hofer (Friar)
on Jun 14, 2013 at 10:45 UTC ( #1038941=note: print w/ replies, xml ) Need Help??


in reply to XML::Simple how do i keep the same xml format (Values and Attributs)?

I cannot switch to XML::Rules.. i need to get this done by XML::Simple..
I wonder why this attribute and value stuff is working in all xml-tags but this 'LONG-NAME' tag..
???


Comment on Re: XML::Simple how do i keep the same xml format (Values and Attributs)?
Replies are listed 'Best First'.
Re^2: XML::Simple how do i keep the same xml format (Values and Attributs)?
by tobyink (Abbot) on Jun 14, 2013 at 11:17 UTC

    Then you are stuck between a rock and a hard place. You don't want to switch away from XML::Simple, yet the author of XML::Simple freely admits that it's not suitable for the sort of task you're describing and recommends other modules instead. Quotes from the documentation:

    "XML::Simple is able to present a simple API because it makes some assumptions on your behalf. These include:

    • [...]
    • "You don't want fine-grained control of the formatting of generated XML
    • [...]

    "In a serious XML project, you'll probably outgrow these assumptions fairly quickly.

    [...]

    "For event based parsing, use SAX (do not set out to write any new code for XML::Parser's handler API - it is obselete).

    "For tree-based parsing, you could choose between the 'Perlish' approach of XML::Twig and more standards based DOM implementations - preferably one with XPath support such as XML::LibXML."

    Personally I use XML::LibXML for virtually any XML-handling task that's thrown my way, and am rarely disappointed by it.

    package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
      Yes, you are right..
      If I am lucky I can convince people installing this package so I can switch to it. Thanks a lot!

      However, I have found a solution :-))

      XML Simple puts nearly every hash as an XML-attribute. But not if its pointing to another hash, example
      :
      $tdata->{'TABLE-CAPTION'} = {'ID' => $_id, 'LONG-NAME' => {content => +'Test results'}};
      Using content will create another XML-tag and not an attribute. But for using this I had to configure XML-Simple like this.
      my $xmlParser = new XML::Simple( RootName => 'TABLE', KeepRoot=>1, ValueAttr=>{ 'TABLE-CAPTION' => 'ID', 'ContentKey' => 'content', }
      Now its working fine, look at this: ^^
      P>Testresults:</P><TABLE> <TABLE-CAPTION ID="ID42.401123046875"> <LONG-NAME>Testresults</LONG-NAME> </TABLE-CAPTION> <TGROUP COLS="4"> <COLSPEC COLNAME="test-id" COLNUM="0" COLWIDTH="1.00*" /> <COLSPEC COLNAME="status" COLNUM="1" COLWIDTH="1.00*" /> <COLSPEC COLNAME="test-spec" COLNUM="2" COLWIDTH="1.00*" /> <COLSPEC COLNAME="requirement-ids" COLNUM="3" COLWIDTH="1.00*" /> <TBODY> <ROW> <ENTRY COLNAME="test-id"> ...

      Thank you very much for all your hints and tips!

      Best regards!!
      Tobias
Re^2: XML::Simple how do i keep the same xml format (Values and Attributs)?
by Jenda (Abbot) on Jun 14, 2013 at 13:52 UTC

    XML::Rules is a single .pm file and its only non-core dependency is XML::Parser which you most probably already have so if you can create/upload your script, you can "install"/upload XML::Rules. No compilation or configuration required, you just need to put the Rules.pm into a directory named XML in one of the directories listed by perl -e "print join qq{\n}, @INC".

    Yes, even you can use CPAN

    Jenda
    Enoch was right!
    Enjoy the last years of Rome.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1038941]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2015-07-31 08:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (275 votes), past polls