in reply to Re: XML::Twig blues
in thread XML::Twig blues

Many thanks for your answer and the time you spent to take a look at the code.

I pasted quite a lot of code simply because Sourceforge (or Sourceforge(t) I should say) had, an outage in my area yesterday and I was not sure if people would get to the repo, being afraid that this will put people off for an answer.

In terms of the problem, I have located the issue in 'parsesubs'. However, I do like your simpler approach, which does populate the 'subblocks' array with everything, which is not really what I want. No (R)DBMS access is required either. So, on the XML::LibXML code example you posted, how can I modify the loop so I can obtain three scalars, each containing separately the XML string of each subblock? This is what my main problem boils down to. (I know I should have done my reading, but I must admit I am not an accomplished LibXML-er.)

Many thanks for any response!
GM

Replies are listed 'Best First'.
Re^3: XML::Twig blues
by graff (Chancellor) on Jun 29, 2011 at 01:26 UTC
    I know I should have done my reading,

    That's right, and (assuming you have XML::LibXML installed), you can still do it -- it's never too late to learn.

    but I must admit I am not an accomplished LibXML-er.

    Neither am I. I just spend some time looking at the docs, and I try stuff out till I get it working.

    However, I do like your simpler approach, which does populate the 'subblocks' array with everything, which is not really what I want.

    In a case like this, it's not really a problem to have more structural elements in a hash than you really need. There's less effort and more efficiency in treating all elements the same way, and then just using whichever ones you really need.

    how can I modify the loop so I can obtain three scalars, each containing separately the XML string of each subblock?

    If that's really what you want to do, eliminate the inner "for" loop, which goes over the nested child nodes, and use the value returned by $sbchild->textContent (or something to that effect -- I don't quite understand what you're asking for, really).

    Just RTFM, try some different stuff, see what happens, lather/rinse/repeat till you figure out what you really want. Or figure out what you really want first, then try different stuff till you get that. Whatever. Good luck.