Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Re: XML::XPath and preserving CDATA fields

by IOrdy (Friar)
on May 31, 2002 at 04:57 UTC ( #170625=note: print w/replies, xml ) Need Help??

in reply to Re: XML::XPath and preserving CDATA fields
in thread XML::XPath and preserving CDATA fields

Matts++ (like he needs any more xp but it's the thought that counts)

I asked this same question on the mailing list a while ago :)
If you still like the thought of XPath over DOM (as I did/do) but would like to preserve/edit/add... CDATA then I found XML::LibXML a great alternative to XML::XPath. (plus it works well with XML::LibXSLT which I beleive is faster than sablotron)

<edit> added some code </edit>
#!/usr/bin/perl -w use strict; use XML::LibXML; undef $/; my $XML=<DATA>; my $parser = XML::LibXML->new(); my $xmlp = $parser->parse_string($XML); print $xmlp->toString; #before munge foreach my $node ($xmlp->findnodes('/foo/bar/text')) { my $data = your_munge_function($node->findvalue('text()')); $node->findnodes('text()')->get_node(1)->setData($data); } print $xmlp->toString; #after munge # functions sub your_munge_function { return "munged $_[0]"; } # data __DATA__ <foo> <bar> <text id="text1"><![CDATA[La dee da de da.<br>Foo bar baz]]></text> <text id="text2">normal text</text> </bar> </foo>

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2023-01-30 11:17 GMT
Find Nodes?
    Voting Booth?

    No recent polls found