I am writing an XML parser and am having an issue with the program handling a link. I am attempting to parse an XML hierarchy Settings/Setting then findnode \'Value\'. The follo
I was able to get this working using this code.
my $dom = XML::LibXML->load_xml(location => $filename);
my $xpc = XML::LibXML::XPathContext->new($dom);
$xpc->registerNs('xsd', 'http://hme.com/Settings.xsd');
my($match1) = $xpc->findnodes('//xsd:Settings/xsd:Setting[@SID="8"]/xsd:Value');
$match1->removeChildNodes();
$match1->appendText('23400');
You ask to find nodes with namespace null and with name Settings. There are no such nodes in the document, so findnodes correctly returns nothing.
You want to find the nodes with namespace http://hme.com/Settings.xsd and with name Settings. You can use the following to achieve that:
my $xpc = XML::LibXML::XPathContext->new();
$xpc->registerNs( s => 'http://hme.com/Settings.xsd' );
for ($xpc->findnodes('/s:Settings/s:Setting[@SID="8"]'), $doc) {
...
}