0

I have to read xml file using Perl LibXML. I will read many xml files. But this file have some namespace below is my sample xml file.

<?xml version="1.0" encoding="UTF-8"?>
<alto xmlns="http://www.loc.gov/standards/alto/ns-v2#"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.loc.gov/standards/alto alto-v2.0.xsd">
<Description>
<MeasurementUnit>inch1200</MeasurementUnit>
</Description>
</alto>

Here is my Perl code to read the above file

use XML::LibXML;

$xml = 'test.xml';

my $parser =XML::LibXML->new();

eval{
   $doc = $parser->parse_file($xml) or die;
};

if($@){
   return;
}
else{
   $v = $doc->findvalue('/alto/Description/MeasurementUnit');
   print "value\t".$v;
}

But when I changed the xmlns=" to xmlns:x=" It will work.

But my xml not contain xmlns:x this only it contains xmlns="value".

Please help me to solve this problem.

ikegami
  • 367,544
  • 15
  • 269
  • 518
Umesha D
  • 826
  • 1
  • 7
  • 14
  • 2
    There is no node named `alto` in the null namespace. You want `alto` in the `http://www.loc.gov/standards/alto/ns-v2#` namespace. You need to use XML::LibXML::XPathContext to do that. This is a FAQ. – ikegami Nov 29 '13 at 13:00
  • @ikegami: Please post your comment as an answer. – Borodin Nov 29 '13 at 13:16
  • can i have some more reference please... – Umesha D Nov 29 '13 at 13:16
  • @Borodin, That's all I had time for at the time. If I had more time, I would have found a duplicate. Some has by now, though. – ikegami Nov 29 '13 at 15:10

0 Answers0