如何将节点的xml内容作为字符串?

时间:2009-06-16 07:04:00

标签: php xml dom

使用PHP的DOM函数,如何将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">位。

基本上,相当于Javascript的innerHTML属性......

1 个答案:

答案 0 :(得分:5)

您可以从<foo>节点创建一个新的DOMDocument,并将其解析为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)); 
}