http://qs1969.pair.com?node_id=1133063


in reply to Re^2: XML Parsing from URL
in thread SOLVED: XML Parsing from URL

Is a very interesting problem but difficult to experiment with.. anyway you can try to use twig_roots or you can try to preprocess your input.
In fact I see a declared lenght in the header: will be possible to read only what is declared in Content-Length and pass this chunk to XML::Twig to be processed.

Maybe you can elaborate a specific XML::Twig question as new SOPW, the author of the module lurks here sometimes..
L*

UPDATE: you can also read this interesting article

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

Replies are listed 'Best First'.
Re^4: XML Parsing from URL - XML::Twig and infinite stream
by Discipulus (Canon) on Jul 03, 2015 at 12:18 UTC
    maybe someting ugly as (modified the data to get rid of the --boundary thing):
    #!/usr/bin/perl use strict; use warnings; use XML::Twig; $|++; open my $fh,'<','xmlstream.xml' or die; while (<DATA>) { chomp; if ($_ =~/Content-Length: (\d+)/){ my $len = $1; my $xml; my $read = read (DATA,$xml,$len,0); print "read: tried $len got $read: [$xml]\n"; my $t= XML::Twig->new( pretty_print => 'indented', twig_handlers => { 'ipAddress'=>sub{print "\t\tIP ADDRESS:\t",$ +_[1]->text,"\n"; } } ); $t->parse($xml); } } __DATA__ Content-Type: application/xml; charset="UTF-8" Content-Length: 478 <EventNotificationAlert version="1.0" xmlns="http://www.hikvision.com/ +ver10/XMLSchema"> <ipAddress>10.1.10.23</ipAddress> <portNo>80</portNo> <protocol>HTTP</protocol> <macAddress>c4:2f:90:00:00:00</macAddress> <channelID>1</channelID> <dateTime>2015-06-24T19:37:22--8:00</dateTime> <activePostCount>0</activePostCount> <eventType>videoloss</eventType> <eventState>inactive</eventState> <eventDescription>videoloss alarm</eventDescription> </EventNotificationAlert> Content-Type: application/xml; charset="UTF-8" Content-Length: 514 <EventNotificationAlert version="1.0" xmlns="http://www.hikvision.com/ +ver10/XMLSchema"> <ipAddress>10.1.10.23</ipAddress> <portNo>80</portNo> <protocol>HTTP</protocol> <macAddress>c4:2f:90:00:00:00</macAddress> <channelID>1</channelID> <dateTime>2015-06-24T19:37:22--8:00</dateTime> <activePostCount>1</activePostCount> <eventType>VMD</eventType> <eventState>active</eventState> <eventDescription>Motion alarm</eventDescription> <DetectionRegionList> </DetectionRegionList> </EventNotificationAlert>


    HtH
    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.