Проблемы с доступом к элементам с пространствами имен в PHP с использованием DOMDocument - PullRequest
2 голосов
/ 27 сентября 2011

Вот мой фрагмент 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-> load ($ xml) на $ dom-> loadXML ($ xml);

1 Ответ

2 голосов
/ 27 сентября 2011

Ваш код работает на меня. Я предполагаю, что вы передаете содержимое XML в $xml, когда load() ожидает, что это будет имя файла или URI. Чтобы загрузить XML-контент напрямую, вы должны использовать

См. http://codepad.org/oy3U1fmE

...