I wrote:

Has anybody here written one or more Perl scripts using XML::LibXML to
find & replace in XML documents?...

Thank you the all the replies. One person recommending a Perl module called XML::Twig. Another person recommended I use regular expressions. Two people recommended the use of XSLT. One of these provided sample code. The other wrote a full-blown program! ("Thanks, Andrew Houghton!")


In the end I re-read some of my Perl/XML books and decided to write a SAX filter using XML::SAX::ParserFactory. Such a filter has the following shape:

  use strict;
  use XML::SAX::ParserFactory;

  my $handler = MyHandler->new();
  my $parser = XML::SAX::ParserFactory->parser(Handler => $handler);

  $parser->parse_uri($ARGV[0]);

  exit;


package MyHandler;

  sub new {
          my $type = shift;
          return bless {}, $type;
  }

  sub start_element {
          my ($self, $element) = @_;
          print "Starting element $element->{Name}\n";
  }

  sub end_element {
          my ($self, $element) = @_;
          print "Ending element $element->{Name}\n";
  }

  sub characters {
          my ($self, $characters) = @_;
          print "characters: $characters->{Data}\n";
  }

  1;

I have saved my script at the following location:

  http://infomotions.com/musings/getting-started/fix-ead.txt

The script will eventually be a part of a workshop I am giving called "Shining a LAMP on XML." the outline, to date, is here:

  http://infomotions.com/musings/getting-started/LAMP.txt

'More later.

--
Eric Lease Morgan



Reply via email to