Ошибка загрузки xml в php (не абсолютная)

Я пытаюсь загрузить файл XML с несколькими объявлениями пространства имен. Мой php:

<?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>"; } ?> 

Ошибка:

xmlns: URI UBLCatalogDocument не является абсолютным в файле: /// C: /wamp/www/XMLExperiments/UBLCatalog.xml,

Я получаю вывод, но ошибка раздражает.

Вербальная ошибка: Примечание: DOMDocument :: load () [domdocument.load]: xmlns: URI UBLCatalogDocument не является абсолютным в файле: /// C: /wamp/www/XMLExperiments/UBLCatalog.xml, строка: 4 в C : \ wamp \ www \ XMLExperiments \ ItemsXml.php в строке 3

И, если я удалю пространство имен по умолчанию (xmlns = "UBLCatalogDocument"), ошибка исчезнет

PHP XML extenstions (DOM, XMLReader, SimpleXml и т. Д.) Используют библиотеку libxml для анализа XML-файлов.

Причина этой ошибки заключается в том, что libxml ожидает абсолютный URL-адрес в xmlns atttibute (т. Е. Xmlns xmlns="http://example.com/some-unique-url" ), но получает только текст ( xmlns="UBLCatalogDocument" ).

На веб-странице libxml :

Значение пространства имен должно быть абсолютным URL-адресом, но URL-адрес не должен указывать на какой-либо существующий ресурс в Интернете.

Поэтому, если это возможно, измените свой атрибут xmlns на некоторый абсолютный URL.

Поиск ваших узлов с помощью XPath может избавиться от вашей ошибки:

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