По какой-то причине, я не смог получить методы saveHTML/saveXML работать. Поэтому я написал свою собственную рекурсивную процедуру, которая работает для меня:
function pvIndent ($ind) {
for ($i=0;$i<$ind;$i++)
print (" ");
}
function pvPrint_r ($val) {
echo '<pre>';
print_r ($val);
echo '</pre>';
}
function pvDOMNodeListPrint_r_ ($ind,$DOMNodeList) {
for ($item=0;$item<$DOMNodeList->length;$item++) {
$DOMNode = $DOMNodeList->item($item);
if ($DOMNode->nodeName != "#text") {
pvIndent ($ind);
print $DOMNode->nodeName;
if ($DOMNode->nodeValue)
print " = " . trim($DOMNode->nodeValue);
print "\n";
if ($DOMNode->attributes)
for ($attr=0;$attr<$DOMNode->attributes->length;$attr++) {
$DOMNodeAttr = $DOMNode->attributes->item($attr);
pvIndent ($ind+1);
print "@" . $DOMNodeAttr->nodeName . " = " . trim($DOMNodeAttr->nodeValue) . "\n";
}
if ($DOMNode->childNodes)
pvDOMNodeListPrint_r_ ($ind+1,$DOMNode->childNodes);
}
}
}
function pvDOMNodeListPrint_r ($DOMNodeList) {
echo '<pre>';
pvDOMNodeListPrint_r_ (0,$DOMNodeList);
echo '</pre>';
}
вызова pvDOMNodeListPrint_r с результатом из запроса на объекте XDOMPath.
Примечание:
ФВ только префикс я использую, чтобы избежать загрязнения пространства имен - не стесняйтесь редактировать его.
Предварительные теги используются таким образом, чтобы свободное пространство и символы новой строки правильно обрабатывались для форматирования при выводе в тело вашего html, где мне обычно нужны такие отладочные операторы - вы можете отформатировать на свой вкус.
Я явно пропустил DOMNode с именем «#text», поскольку они, похоже, повторяют текст, уже содержащийся в родительском узле. Я не уверен, что это правильно для всех допустимых XDOMPath, загруженных HTML, но я еще не видел исключения - вы всегда можете исключить исключение, если не возражаете против обычной избыточности.
Спасибо, но когда я использую var_dump я получаю этот выход «объект (DOMNodeList) # 9 (0) {}», я уверен, что это не выход, я ищу, потому что MyObject имеет много данных. – ahmed
, очевидно, это не так.Вы можете взглянуть на комментарий zombat о xpath, поскольку это территория, которую я не слишком хорошо знаком с DomXPath, но если var_dump говорит о ее пустом, то я вполне уверен, что у нее нет того, что, по вашему мнению, имеет в ней = ( – Ryan