Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: change setHandlers XML::Parser

by Jenda (Abbot)
on Oct 19, 2012 at 21:42 UTC ( #1000054=note: print w/ replies, xml ) Need Help??


in reply to change setHandlers XML::Parser

XML::Parser is a little too low-level. What is it you are trying to achieve?

Jenda
Enoch was right!
Enjoy the last years of Rome.


Comment on Re: change setHandlers XML::Parser
Replies are listed 'Best First'.
Re^2: change setHandlers XML::Parser
by etlamar (Novice) on Oct 20, 2012 at 00:27 UTC

    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.

      You can ask XML::Twig to give you just the tag(s) you are interested in (twig_root) and handle them by a custom subroutine. Or you can have a look at XML::Rules and basically do the same. Or if you were so inclined use XML::LibXML::SAX.

      Jenda
      Enoch was right!
      Enjoy the last years of Rome.

        Thanks very much to you both. I will try XML::Twig. I might come back with additional posts if I get stumped, but it sounds like that module will do the trick.

        Thanks again

        etlamar

      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>

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2015-07-31 04:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls