Esta é a melhor maneira de importar o corpo de um DOMDocument (HTML) para outro?

Possível Duplicado:
Como inserir HTML no PHP DOMNode?

Continuando com esta questão , aqui está o código que estou prestes a começar a usar:

function getHTMLDOMSegment( $file ) { $doc = new DOMDocument(); $doc->loadHTMLFile( $file ); $body = $dom->getElementsByTagName('body')->item(0); return $body->childNodes; } 

Então eu simplesmente iria iterar sobre as crianças, usando importNode e append cada lugar onde eles precisassem para ir em outro DOMDocument HTML-loaded.

Isso parece certo?

Editar: Para ser claro, uma vez que os arquivos de origem com os quais estou trabalhando talvez não sejam “adequados” XHTML, eu preciso passar por loadHTMLFile como este, não importa o que, aparentemente.

Além disso, porque isso pode ter que trabalhar com uma grande quantidade de conteúdo HTML, meu objective também é ser eficiente.

Estou um pouco relutante em responder a esta pergunta porque basicamente é apenas uma versão mais longa do que Artefacto e eu já lhe dissemos, mas, de qualquer forma.

Você pode adicionar a sub-tree XML bruta e adicioná-la através de um fragment

  • DOMDocumentFragment::appendXML – Anexe dados XML brutos

Ou use

  • DOMDocument::importNode – Importa o nó para o documento atual

Note que você pode importar profundamente trees inteiras passando TRUE como o segundo argumento.

Exemplos:

 $a = <<< HTML 

Hello World

I am from the src document

HTML; $b = <<< HTML

Importing Fragments

HTML;

Usando fragments:

 $dest = new DOMDocument; $dest->loadHTML($b); $fragment = $dest->createDocumentFragment(); $fragment->appendXML($a); $dest->getElementsByTagName('h1')->item(0)->appendChild($fragment); echo $dest->saveHTML(); 

Usando importações:

 $dest = new DOMDocument; $dest->loadHTML($b); $src = new DOMDocument; $src->loadHTML($a); $dest->getElementsByTagName('h1')->item(0)->appendChild( $dest->importNode( $src->getElementsByTagName('div')->item(0), TRUE ) ); echo $dest->saveHTML(); 

A saída para ambos seria algo como

  

Importing Fragments

Hello World

I am from the src document

Se você está preocupado com o que se realiza melhor, sugiro fazer uma referência em condições reais, por exemplo, na sua aplicação. Então, julgue por você mesmo, que se adapte às suas necessidades.