DOM com Arrays

Aprenda como criar um novo projeto Inphinit.

DOM para Array

É possível converter arquivos XML, HTML ou até strings com tal conteúdo para um Array complexo ou até um Array simples, dependendo da sua necessidade, exemplo:

use Inphinit\Dom\Document; $handle = new Document(Document::XML); $handle->load('<root xmlns:book="https://book-io"><node foo="bar" baz="foobar">contents</node><book:tag>baz</book:tag></root>'); echo "COMPLETE:\n"; print_r($handle->toArray(Document::ARRAY_COMPLETE)); echo "SIMPLE:\n"; print_r($handle->toArray(Document::ARRAY_SIMPLE)); echo "MINIMAL:\n"; print_r($handle->toArray(Document::ARRAY_MINIMAL));

O resultado ARRAY_COMPLETE será gerar um Array complexo, mas que pode ser útil, que incluirá os atributos e valores de tags com namespace:

print_r($handle->toArray(Document::ARRAY_COMPLETE));

saída:

Array ( [root] => Array ( [node] => Array ( [@attributes] => Array ( [foo] => bar [baz] => foobar ) [@contents] => contents ) [book:tag] => baz [@attributes] => Array ( [xmlns:book] => https://book.io ) ) )

O resultado que ARRAY_SIMPLE irá gerar um Array um pouco menos complexo:

print_r($handle->toArray(Document::ARRAY_SIMPLE));

saída:

Array ( [root] => Array ( [node] => Array ( [@attributes] => Array ( [foo] => bar [baz] => foobar ) [@contents] => contents ) [book:tag] => baz [@attributes] => Array ( [xmlns:book] => https://book.io ) ) )

Enquanto ARRAY_MINIMAL retornará um Array bastante simples, contendo apenas valores e chaves de tags sem namespace. Atributos também não serão convertidos:

print_r($handle->toArray(Document::ARRAY_MINIMAL));

saída:

Array ( [root] => Array ( [node] => contents ) )

Converter matriz para HTML

Um Array pode ser convertido em HTML ou XML e para definir os arquivos as chaves do array devem ser prefixadas com o @, com exceção do @contents, que servirá para preencher o valor do elemento gerado. Exemplo de HTML:

use Inphinit\Dom\Document; $handle = new Document(Document::HTML); $handle->fromArray([ 'html' => [ 'head' => [ '@contents' => 'contents <title>test</title>', ], 'body' => [ 'main' => [ 'p' => [ '@contents' => 'contents <s>test</s>', 'span' => [ 'foo', 'bar', 'baz' ] ], 'div' => [ 'foo', 'bar', 'baz' ], '@comment' => 'test' ], '@attributes' => [ 'data-foo' => 'bar', 'data-baz' => 'foobar' ] ], '@attributes' => [ 'class' => 'sample', 'id' => 'test' ] ] ]); $handle->dump($handle->root());

Converter matriz para XML

Um Array pode ser convertido em XML da mesma forma que no exemplo para HTML. Para definir os arquivos como chaves do array devem ser prefixados com o @, com exceção do @contents, que servirá para preencher o valor do elemento gerado. Exemplo de HTML:

use Inphinit\Dom\Document; $handle = new Document(Document::XML); $handle->fromArray([ 'root' => [ 'node' => [ '@attributes' => [ 'foo' => 'bar', 'baz' => 'foobar' ], 'foo' => [ 'bar', 'baz' ], '@contents' => 'contents <s>test</s>', ], 'book:tag' => 'baz', '@attributes' => [ 'class' => 'sample', 'xmlns:book' => 'https://book.io' ], '@comment' => 'foobar' ] ]); $handle->dump($handle->root());
Página inicial
Apoie com uma estrela no GitHub