http://www.perlmonks.org?node_id=939501

veerubiji has asked for the wisdom of the Perl Monks concerning the following question:

Hi monks, I have one XML file like this

<datainfo> <data> <number>12</number> <branch>electronics</branch> <details> ....... </details> </data> <data> <number>23</number> <branch>computers</branch> <details> ....... </details> </data> <data> <number>12</number> <branch>science</branch> <details> ....... </details> </data> </datainfo>

I am reading that xml file using XML::LibXML and printing like this

#!/usr/bin/perl use warnings; use strict; use XML::LibXML::Reader; my $file="data.xml"; my $reader = XML::LibXML::Reader->new( IO => $file ) or die ("unab +le to open file"); while ($reader->nextElement( 'data' ) ) { my $info = $reader->readOuterXml(); } $all=$all.$info; } print $all;

Above code is not working It printing only <infolist> and </info> its not printing any data between that. I tried to extract data nodes from xml file and eliminate if any duplicate nodes by searching nuber tag and print this information into string.because I need to use this string some other process.

expected output

<datainfo> <data> <number>12</number> <branch>electronics</branch> <details> ....... </details> </data> <data> <number>23</number> <branch>computers</branch> <details> ....... </details> </data> </datainfo>

Thanks

Replies are listed 'Best First'.
Re: Remove node information by searching tag element
by MidLifeXis (Monsignor) on Nov 22, 2011 at 18:00 UTC

    This is a FAQ (see the third example). You can find this with perldoc -q unique from your command line.

    --MidLifeXis

      Actually sorry for not providing full information now I edited so please help me with that. I am not storing in a hash.

        The basic process is still the same. You record what you have seen and make processing decisions based on that data.

        doSomething($data) unless $seen{$key}++

        Providing appropriate values for $key, doSomething(), and $data are left as an exercise for the reader.

        Update: Perhaps I am misunderstanding your question. Please post what you expect to see as output given the provided input data.

        --MidLifeXis