В 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;
}