On Thu, Jul 08, 2004 at 11:16:00PM -0500, Eric Lease Morgan wrote:
> Has anybody here written one or more Perl scripts using XML::LibXML to 
> find & replace in XML documents?

Sounds like you could probably use the XPath features in XML::LibXML
to isolate the nodes you want to change, update them, and then output
them again.

As an example I pulled a TEI file down from here:

    http://www.unc.edu/awmc/tei/teiAWMCWORK1375.xml

And I wrote this program to change the title element:

    #!/usr/bin/perl

    use strict;
    use warnings;
    use XML::LibXML;

    ## create the parser, and the dom object
    my $parser = XML::LibXML->new();
    my $doc = $parser->parse_file( 'foo.xml' );

    ## extract the first title text node
    my $nodes = $doc->findnodes( '/TEI.2/teiHeader/fileDesc/titleStmt/title/text()' );
    my $node = $nodes->pop();

    ## update the content 
    $node->setData( "The adventures of Huckleberry Finn" );

    ## output
    print $doc->toString();

The XML::LibXML docs sure are daunting, I'll agree there. 

//Ed

-- 
Ed Summers
aim: inkdroid
web: http://www.inkdroid.org

Well it's too bad the machine that we built would never save us, that's what they 
say... [Jimi Hendrix]

Reply via email to