You might want to consider using the SAX events that XML::Simple (and many other XML parsers) can generate.
Rather than process the entire XML document in memory, the parser will generate events (for example the start or end of an element) which can then be used to trigger a handler, which can:
- process that particular element or section
- run code unrelated to the XML processing
- print a status message
- anything else you fancy
As well as keeping resource usage down, you can print the new document to the browser as you process it.
Cheers.
BazB
Update: Added a few suggestions of what SAX events could be used to trigger.
Update 2: mirod++. I've not been able to confirm XML::Simple's behaviour regarding having to slurp the whole file before producing SAX events, but I'll bow to mirod's superior knowledge in this area :-) mirod's idea of using a SAX filter is cunning.
If the information in this post is inaccurate, or just plain wrong, don't just downvote - please post explaining what's wrong.
That way everyone learns.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.