I couldn't find anything that looks like it would help you in XML:DOM, so the next best thing I could do is try something similar with XML:LibXML
Here's some sample code that might help you:
#Open and parse XML
open (my $input, "<xmlsample.xml")or die "Could not open xml input.";
my $parser = XML::LibXML->new();
my $pdoc = $parser->parse_file('xmlsample.xml');
close ($input) or die "Could not close xml input.";
#Register Namespace
my $rdoc = XML::LibXML::XPathContext->new($pdoc->documentElement());
$rdoc->registerNs( ns => 'bazongNS' );
#Find node and add element
my ($object) = $rdoc->findnodes("\/\/ns:root");
$object->addNewChild("bazongNS","element");
#Replace file
open (my $OutputXML, ">xmlsample.xml") or die "Could not write XML fil
+e.";
print $OutputXML $pdoc->toString();
close ($OutputXML) or die "Could not close written XML file.";
The sampleXML.xml originally contains:
<root xmlns="bazongNS">
</root>
The sampleXML.xml output contains:
<?xml version="1.0"?>
<root xmlns="bazongNS">
<element/>
</root>
Hope this helps. |