我正在尝试加载具有多个命名空间声明的 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 在 file:///C:/wamp/www/XMLExperiments/UBLCatalog.xml 中不是绝对的,第 4 行(在 C 中) :\wamp\www\XMLExperiments\ItemsXml.php 第 3 行
而且,如果我删除默认命名空间 (xmlns="UBLCatalogDocument"),错误就会消失
PHP XML 扩展(DOM、XMLReader、SimpleXml 等)使用 libxml 库 http://www.php.net/manual/en/intro.libxml.php解析 XML 文件。
这个错误的原因是libxml 需要绝对 URLxmlns
属性 (i.e. xmlns="http://example.com/some-unique-url"
),但仅获取文本 (xmlns="UBLCatalogDocument"
).
来自libxml 网页 http://www.xmlsoft.org/namespaces.html:
命名空间值必须是绝对 URL,但 URL 不是
必须指向 Web 上的任何现有资源。
所以如果可能的话,改变你的xmlns
属性到某个绝对 URL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)