Я не могу заставить PHP класс SimpleXML распознавать префиксные элементы пространства имен в документе XHTML.Вот мой пример:
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:zuq="http://localhost/zuq">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<h1>Heading</h1>
<p>Paragraph</p>
<zuq:region name="myRegion">
<div class="myClass">
<h1><zuq:data name="myDataHeading" /></h1>
<p><zuq:data name="myDataParagraph" /></p>
</div>
</zuq:region>
</body>
</html>
Когда я делаю следующее:
$sxml = simplexml_load_file('test.html');
print_r($sxml);
Возвращает:
SimpleXMLElement Object
(
[head] => SimpleXMLElement Object
(
[meta] => SimpleXMLElement Object
(
[@attributes] => Array
(
[http-equiv] => Content-Type
[content] => text/html; charset=utf-8
)
)
[title] => Untitled Document
)
[body] => SimpleXMLElement Object
(
[h1] => Heading
[p] => Paragraph
)
)
Но когда я делаю следующее:
$sxml = simplexml_load_file('test.html');
$sxml_zuq = $sxml->children('zuq', true);
print_r($sxml_zuq);
Возвращает пустое значение:
SimpleXMLElement Object
(
)
Итерация по объекту с foreach
или иным образом не работаети использование URI вместо префикса в children()
также дает сбой.
Я, очевидно, где-то допустил ошибку, но я не уверен, где, поскольку моя попытка совершенно идентична многим учебным примерам.наткнулся в моем чтении.
Что здесь происходит?