3

I am trying tom load an XML document with multiple namespace declarations My php is:

<?php 
$doc = new DOMDocument('1.0','UTF-8'); 
$doc->load( 'UBLCatalog.xml' ); 

$Items = $doc->getElementsByTagNameNS( "UBLCommonAggregateComponents","Item" ); 
foreach( $Items as $Item ) 
{ 
 $descriptions = $Item->getElementsByTagNameNS( "UBLCommonBasicComponents","Description" ); 
 $description = $descriptions->item(0)->nodeValue;  

 echo "<b>$description\n</b><br>"; 
 } 
?> 

The error is:

xmlns: URI UBLCatalogDocument is not absolute in file:///C:/wamp/www/XMLExperiments/UBLCatalog.xml,

I am getting output, but the error is annoying.

The verbatim error is: Notice: DOMDocument::load() [domdocument.load]: xmlns: URI UBLCatalogDocument is not absolute in file:///C:/wamp/www/XMLExperiments/UBLCatalog.xml, line: 4 in C:\wamp\www\XMLExperiments\ItemsXml.php on line 3

And, if I remove the default namespace (xmlns="UBLCatalogDocument") the error goes away

2
  • 1
    Can you share the XML format here for others to see. Would help in understanding the structure. Commented Jun 12, 2012 at 6:46
  • What line is causing this error? Commented Jun 12, 2012 at 18:29

2 Answers 2

3

PHP XML extenstions (DOM, XMLReader, SimpleXml etc.) use libxml library to parse XML files.

The reason of this error is that libxml expects absolute URL in xmlns atttibute (i.e. xmlns="http://example.com/some-unique-url"), but gets only text (xmlns="UBLCatalogDocument").

From the libxml webpage:

The namespace value has to be an absolute URL, but the URL doesn't have to point to any existing resource on the Web.

So if it's possible, change your xmlns attribute to some absolute URL.

Sign up to request clarification or add additional context in comments.

Comments

1

Finding your nodes using XPath might get rid of your error:

$xpath = new DOMXpath($doc);
$Items = $xpath->query('//item[@xmlns="UBLCommonAggregateComponents"]');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.