Thanks, Jenda, and Anonymous Monk, I am trying to parse through a huge kml file that contains longitude and latitude coordinates for census blocks and pull out only those long and lat coords that pertain to certain blocks within a subset of census tracts. I will have CDATA information to parse through to get the tract and block numbers, but right now I am just trying to test code on pulling out the long and lat coordinates that are denoted by a <coordinates> tag in the xml.
In other words, right now, I want to extract information only if the Start handler indicates a <coordinates> tag. That's why I am looking for a way to conditionally switch to a different handler. Sorry for the long-winded answer. Hope this helps. XML::Twig looks interesting, but I was hoping to stick with a more SAX-like parser rather than DOM-like or pull-parser like.
Would you also suggest XML::Twig?
Thanks again.
| [reply] [Watch: Dir/Any] |
| [reply] [Watch: Dir/Any] |
| [reply] [Watch: Dir/Any] |
XML::Twig looks interesting, but I was hoping to stick with a more SAX-like parser rather than DOM-like or pull-parser like. XML::Twig is super flexible, its SAX+DOM or SAX or DOM. Rarely do you want to use the SAX feature alone, mostly its SAX+DOM (SAX+TWIG, only a little piece of DOM).
Re: XML::Twig n00b
$ perl
use XML::Twig ;
XML::Twig->new(
twig_handlers => {
'coordinates' => sub {
print $_->xpath, "\n";
print $_->trimmed_text, "\n\n";
},
},
)->xparse( "somefile.xml" );
__END__
/on/no/coordinates
ro
/on/ma/to/peia/coordinates
sham
/on/coordinates
bo
/on/coordinates[2]
<b>Asin</b> (I) - Biography
$ cat somefile.xml
<on>
<no><coordinates>ro</coordinates></no>
<ma><to><peia><coordinates>sham</coordinates></peia></to></ma>
<coordinates>bo</coordinates>
<coordinates><![CDATA[<b>Asin</b> (I) - Biography]]></coordinates>
</on>
| [reply] [Watch: Dir/Any] [d/l] |