Если у вас есть 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; }