eff_i_g has asked for the wisdom of the Perl Monks concerning the following question:
Monks,
Given the s[ai]mple XML file:
My approach is to create a twig_root of element, loop through its children, find "Two", then add the PIs.
The trouble is that I'm getting one child ("One<?xpp qa?>Two"), when I think I should be getting three ("One", "<?xpp qa?>", "Two"). Alas, the PI is being lumped in with the PCDATA.
Sure, I could parse the PI out of the PCDATA, but that doesn't seem right. Perhaps I've a misunderstanding, a bug, or have overlooked something in the XML::Twig docs?
Insights are appreciated.
P.S. The test code:
Given the s[ai]mple XML file:
I want to wrap "Two" in <?xpp bold?> and <?xpp /bold?>.<root> <element>One<?xpp qa?>Two</element> </root>
My approach is to create a twig_root of element, loop through its children, find "Two", then add the PIs.
The trouble is that I'm getting one child ("One<?xpp qa?>Two"), when I think I should be getting three ("One", "<?xpp qa?>", "Two"). Alas, the PI is being lumped in with the PCDATA.
Sure, I could parse the PI out of the PCDATA, but that doesn't seem right. Perhaps I've a misunderstanding, a bug, or have overlooked something in the XML::Twig docs?
Insights are appreciated.
P.S. The test code:
use strict; use warnings; use XML::Twig; my $XML = XML::Twig->new( twig_roots => { 'element' => sub { for my $child ($_->cut_children()) { $child->print(); print "\n"; } } }, pretty_print => 'indented' ); $XML->parse(*DATA); print "\n"; __DATA__ <root> <element>One<?xpp qa?>Two</element> </root>
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: XML::Twig and Processing Instructions
by mirod (Canon) on Mar 19, 2009 at 16:45 UTC | |
Re: XML::Twig and Processing Instructions
by eff_i_g (Curate) on Mar 19, 2009 at 17:07 UTC | |
by mirod (Canon) on Mar 19, 2009 at 17:42 UTC | |
by eff_i_g (Curate) on Mar 19, 2009 at 18:58 UTC |
Back to
Seekers of Perl Wisdom