В PHP, как я могу получить внешний XML-код из DOMNode?
Если у вас DOMNode в PHP, как вы можете получить внешний xml (т.е. весь XML, который находится внутри этого элемента плюс сам элемент)?
Например, скажем, что это структура
<car>
<tire>Michelin</tire>
<seats>Leather</seats>
<type>
<color>red</color>
<make>Audi</make>
</type>
</car>
И у меня есть указатель на <type> node... Я хочу вернуться
<type>
<color>red</color>
<make>Audi</make>
</type>
Если я просто попрошу текст, я вернусь "redAudi".
Ответы
Ответ 1
Вам нужен DOMDocument:
// If you don't have a document already:
$doc = new DOMDocument('1.0', 'UTF-8');
echo $doc->saveXML($node); // where $node is your DOMNode
Проверьте DOMDocument:: saveXML в документах для получения дополнительной информации.
Когда вы передаете DOMNode для сохраненияXML(), вы возвращаете только содержимое этого node не всего документа.
Ответ 2
После часа, проведенных, я придумал это (это кажется лучшим решением)
$node->ownerDocument->saveXml($node);
Ответ 3
Вы можете попробовать что-то вроде:
function getInnerXml(DomNode $node){
$xml = '';
foreach($node->childNodes as $childNode){
$xml .= $node->ownerDocument->saveXml($childNode);
}
return $xml;
}