in reply to Re: NOT_FOUND_ERR in insertAfter()
in thread NOT_FOUND_ERR in insertAfter()
Update
I tested the change above, and found that it does not correct the problem, you need to use the form I have below with undef as the second arg to insertAfter. It is possible that this is a result of different versions, so test for yourself.
End update
I was just going to post the same thing as above after a quick test script. Here is the output produced by making the change:
<?xml version="1.0" encoding="utf-8"?> <University> <students> <student id="1000"/> <student id="1001"><student id="1003"/></student> <student id="1002"/> </students> </University>
On a different note, you should always have use strict; and use warnings; as well as check for critical failures in your code, like this:
#!/usr/bin/perl use strict; use warnings; use XML::LibXML; my $parser = XML::LibXML->new(); # this call should probably be wrapped in an eval (or Try::Tiny) or at + least # tested for a valid object being returned. my $doc = $parser->parse_file('student.xml'); my $query = '//student'; for my $ele ($doc->findnodes($query)){ my $attr_text=$ele->getAttribute('id'); if($attr_text eq '1001'){ my $new_ele=$doc->createElement('student'); $new_ele->setAttribute('id','1003'); $ele->insertAfter($new_ele,undef); last; } } # if you can't open the file you want to know why open(TESTFILE,">result.xml") or die "Can not open output: $!"; print TESTFILE $doc->toString; close(TESTFILE); exit; __END__
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: NOT_FOUND_ERR in insertAfter()
by NetWallah (Canon) on Sep 25, 2013 at 05:34 UTC | |
by Anonymous Monk on Sep 25, 2013 at 05:59 UTC | |
by boftx (Deacon) on Sep 25, 2013 at 06:03 UTC |