У меня есть этот, очевидно, базовый код:
$docSrc =
'<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title /></head>
<body><p>Test paragraph.</p></body>
</html>';
$domDoc = new DOMDocument();
$domDoc->loadXML($docSrc);
$xpath = new DOMXPath($domDoc);
$nodeList = $xpath->query('//p');
$this->assertTrue($nodeList->length == 1);
Это должно сработать, но с треском проваливается, длина равна 0. Я искал решение весь день, но безрезультатно.
Ух, спасибо!Оно работает!К сожалению, мой оригинальный код:
$query = new Zend_Dom_Query($docSrc);
$xpathQuery = '//p';
$result = $query->queryXpath($xpathQuery);
$this->assertTrue($result->count() == 1);
считает, что это XML и выполняет loadXML.У вас есть идея, почему это происходит?
Хорошо, я нашел виновника где-то в библиотеке Zend:
if ('<' . '?xml' == substr(trim($document), 0, 5)) {
return $this->setDocumentXml($document, $encoding);
}
Интересно, правильно ли это, так как это документ XML, но загрузка XML не работает.
Хорошо, я провожу некоторые исследования.Видимо, проблема связана с пространствами имен ...