使用DOMDocument在PHP中访问带有名称空间的元素的问题

时间:2011-09-27 13:24:21

标签: php xml domdocument

这是我的XML片段:

<?xml version="1.0" encoding="UTF-8"?>
<ns:searchResult xmlns:ns="http://outerx.org/daisy/1.0">
...
    <ns:rows>
        <ns:row documentId="1440-DFO_MPO" branchId="1" languageId="2"
            access="read,fullRead,write,publish">
            <ns:value>1440-DFO_MPO</ns:value>
            <ns:value>Navigation for Multimedia</ns:value>
        </ns:row>
    </ns:rows>
...

这是我目前的PHP代码:

$dom = new DOMDocument();
$dom->load($xml);
$docs = $dom->getElementsByTagNameNS('http://outerx.org/daisy/1.0','row');

print "<ul>";
$c = 0;    
foreach ($docs as $elem) {
    print "<li>".$c."</li>";
    $c = $c + 1;
}    
print "</ul>";

AFAIK,此代码段应根据XML片段输出一个项目的列表。但是,它没有。

我也尝试过(没有成功):

$docs = $dom->getElementsByTagName('row');

编辑#1 - 解决方案

将$ dom-&gt;加载($ xml)更改为$ dom-&gt; loadXML($ xml);

1 个答案:

答案 0 :(得分:2)

您的代码适合我。我假设当load()期望它是文件名或URI时,您在$xml中传递XML内容。要直接加载XML内容,您必须使用

请参阅http://codepad.org/oy3U1fmE