On 19/03/2012 14:45, Anirban Adhikary wrote:
On Mon, Mar 19, 2012 at 7:41 PM, Rob Dixon<rob.di...@gmx.com>  wrote:

XML::Twig uses callbacks to process pieces of the XML that you have
defined. In this case you are interested only in the<BSC>  start tag so
you can define a "start tag handler". Using $twig->purge empties the
data read so far. If you use this once you have accessed all the
information you need from a given element there is no need to store the
entire XML data in memory.

The program below doeas what I think you want.

HTH,

Rob


use strict;
use warnings;

use XML::Twig;

my $twig = XML::Twig->new(start_tag_**handlers =>  {
    BSC =>  \&on_BSC
});

sub on_BSC {
  my($twig, $bsc)= @_;
  print $bsc->id, "\n";
  $twig->purge;
}

$twig->parsefile('ISProducts.**xml');

Thanks for your support.The code does exactly what I want .................
Can you please suggest me a tutorials with good examples on XML::Twig.

Another thing can you please explain me this line in the code my($twig,
$bsc)= @_;


When I am trying to print the value against the tag ALPHA it is not prints
anything,though it is not showing any warnings.

use strict;
use warnings;

use XML::Twig;

my $twig = XML::Twig->new(start_tag_handlers =>  {
    BSC =>  \&on_BSC
});

sub on_BSC {
  my($twig, $bsc)= @_;
  print $bsc->id, "\n";
  my $alpha = $bsc->field('ALPHA');
  print $alpha, "\n";
  $twig->purge;
}

$twig->parsefile(ISProducts.xml');

Hi Anirban

I use the POD documentation supplied with the module, but I agree it is
a little opaque. XML::Twig has its own website at http://xmltwig.org
where you will find some tutorials that may help you.

The line

  my ($twig, $bsc)= @_;

copies the values supplied as parameters to the callback into local
variables. $twig is the XML::Twig object itself, and $bsc is an
XML::Twig::Elt object representing the <BSC> XML element that has been
found.

You are unable to access the child elements of each <BSC> because I have
suggested you specify "start_tag_handlers" for which only the start tag
is available. That was fine when you just wanted the "id" attribute from
the tag, but there is no information about any other part of the XML.

You need to use "twig_handlers" instead, when the entire <BSC> element
will be accessible using

  $bsc->first_child_trimmed_text('ALPHA')

HTH,

Rob

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to