В PHP, как я могу получить внешний XML-код из DOMNode?

Если у вас есть DOMNode в PHP, как вы можете получить внешний xml (т. Е. Весь XML, который находится внутри этого элемента, плюс сам элемент)?

Например, скажем, что это структура

<car> <tire>Michelin</tire> <seats>Leather</seats> <type> <color>red</color> <make>Audi</make> </type> </car> 

И у меня есть указатель на узел <type> … Я хочу вернуться

 <type> <color>red</color> <make>Audi</make> </type> 

Если я просто попрошу текст, я вернусь «redAudi».

Вам нужен 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->ownerDocument->saveXml($node); 

Вы можете попробовать что-то вроде:

 function getInnerXml(DomNode $node){ $xml = ''; foreach($node->childNodes as $childNode){ $xml .= $node->ownerDocument->saveXml($childNode); } return $xml; }