В PHP, как я могу получить внешний XML из DOMNode? - PullRequest
12 голосов
/ 12 июня 2009

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

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

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

И у меня есть указатель на узел ... Я хочу вернуться

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

Если я просто спрашиваю текст, я получаю "redAudi".

Ответы [ 3 ]

19 голосов
/ 12 июня 2009

Вам нужен 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 в saveXML (), вы получаете обратно только содержимое этого узла, а не весь документ.

9 голосов
/ 05 мая 2015

После часа я придумал это (кажется, лучшее решение)

$node->ownerDocument->saveXml($node);
0 голосов
/ 21 августа 2009

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

function getInnerXml(DomNode $node){
  $xml = '';
  foreach($node->childNodes as $childNode){
    $xml .= $node->ownerDocument->saveXml($childNode);
  }
  return $xml;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...