Как получить содержимое xml узла в виде строки?

Используя функции DOM PHP, как вы конвертируете содержимое узла DOM в строку?

<foo> Blah blah <bar baz="1">bah</bar> blah blah </foo> 

Учитывая foo как текущий узел контекста, как вы получаете 'Blah blah <bar baz="1">bah</bar> blah blah' как строку? Использование $node->textContent или $node->nodeValue просто возвращает текстовые узлы, а не бит <bar baz="1"> .

В принципе, эквивалент свойства innerHTML Javascript …

Вы можете создать новый DOMDocument с узла <foo> и проанализировать его как XML или HTML:

 function getInnerHTML($node) { $tmpDoc = new DOMDocument('1.0'); $block = $tmpDoc->importNode($node->cloneNode(true),true); $tmpDoc->appendChild($block); $outer = $tmpDoc->saveHTML(); //this will remove the outer tags return substr($outer,strpos($outer,'>')+1,-(strlen($node->nodeName)+4)); }