-
Notifications
You must be signed in to change notification settings - Fork 8
DOM, Xml, HTML, Json e Arrays
Esta classe é Experimental
É possível converter xml para array ou json, basta adicionar Inphinit\Experimental\Dom\Document
no seu script
Para converter para Array use o método Inphinit\Experimental\Dom\Document::toArray
:
<?php
use Inphinit\Routing\Route;
use Inphinit\Experimental\Dom\Document;
Route::set('ANY', '/', function ()
{
$doc = new Document;
$doc->loadXML('<root><node>contents</node></root>');
print_r($doc->toArray());
});
Retorna:
Array
(
[root] => Array
(
[node] => contents
)
)
Para converter para Json use o método Inphinit\Experimental\Dom\Document::toJson
:
$doc = new Document;
$doc->loadXML('<root><node>contents</node></root>');
print_r($doc->toJson());
As funções toArray
e toJson
possuem 3 constantes:
-
Document::SIMPLE
, esta é padrão com a funçãotoArray
, ele adiciona tags normais e tags com namespace para o array ou json -
Document::MINIMAL
, esta é padrão com a funçãotoJson
, ele adiciona apenas tags normais o array ou json -
Document::COMPLETE
, esta constante adicionar tags normais, tags com namespace e atributos para o array ou json
Usando Document::SIMPLE
:
$doc = new Document;
$doc->loadXML('<root xmlns:book="https://book.io"><node foo="bar" baz="foobar">contents</node><book:tag>baz</book:tag></root>');
print_r($doc->toArray(Document::SIMPLE)); // Document::SIMPLE é opcional
retorna:
Array
(
[root] => Array
(
[node] => contents
[book:tag] => baz
)
)
Usando Document::MINIMAL
:
$doc = new Document;
$doc->loadXML('<root xmlns:book="https://book.io"><node foo="bar" baz="foobar">contents</node><book:tag>baz</book:tag></root>');
print_r($doc->toArray(Document::MINIMAL));
retorna:
Array
(
[root] => Array
(
[node] => contents
)
)
Usando Document::COMPLETE
:
$doc = new Document;
$doc->loadXML('<root xmlns:book="https://book.io"><node foo="bar" baz="foobar">contents</node><book:tag>baz</book:tag></root>');
print_r($doc->toArray(Document::COMPLETE));
retorna:
Array
(
[root] => Array
(
[@attributes] => Array
(
[xmlns:xml] => http://www.w3.org/XML/1998/namespace
[xmlns:book] => https://book.io
)
[@contents] => Array
(
[node] => Array
(
[@attributes] => Array
(
[foo] => bar
[baz] => foobar
)
[@contents] => contents
)
[book:tag] => baz
)
)
)
A função Inphinit\Experimental\Dom\Document::save
possue 3 constantes:
-
Document::XML
este é o valor padrão na funçãosave
, converte o objeto para XML e salva em um arquivo -
Document::HTML
converte o objeto para HTML e salva em um arquivo -
Document::JSON
converte o objeto para JSON e salva em um arquivo
$doc = new Document;
$doc->fromArray([
'catalog' => [
'book' => [
[
'author' => 'Stephen King',
'title' => 'Under the Dome'
], [
'author' => 'H. P. Lovecraft',
'title' => 'The Call of Cthulhu'
]
]
]
]);
$doc->save('folder/foo.xml', Document::XML); //Salva para XML, o parâmetro Document::XML é opcional
Salvando para um documento Json:
$doc->save('folder/baz.json', Document::JSON);
Salvando para um documento HTML:
$doc = new Document;
$doc->fromArray([
'html' => [
'body' => [
'p' => [
'foo bar baz',
'bar foo baz',
'baz foo bar',
]
]
]
]);
$doc->save('doc.html', Document::HTML);
Criando um Xml
$xml->fromArray([
'main' => [
'header' => 'my header',
'container' => [
'section' => [
'section 1',
'section 2',
'section 3'
]
],
'footer' => 'my footer',
]
]);
Retorno:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<header>my header</header>
<container>
<section>section 1</section>
<section>section 2</section>
<section>section 3</section>
</container>
<footer>my footer</footer>
</main>
O @contents
é opcional, fazer isto:
$xml->fromArray([
'main' => 'foo bar baz'
]);
é equivalente a isto:
$xml->fromArray([
'main' => [
'@contents' => 'foo bar baz'
]
]);
O uso do @contents
só se faz necessário quando precisar adicionar atributos com @attributes
A opção @attributes
permite adicionar atributos para uma tag
$xml->fromArray([
'main' => [
'container' => [
'@attributes' => [
'myattr1' => 'value 1',
'myattr2' => 'value 2'
],
'@contents' => 'foo bar baz'
],
'info' => 'foo bar baz info'
]
]);
Retorna:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<container myattr1="value 1" myattr2="value 2">foo bar baz</container>
<info>foo bar baz info</info>
</main>
Inphinit the PHP Framework is writed using PSR-1, PSR-2 and PSR-4, you can use Controllers, Views, Routes
- Getting Started
- About
- Performance
- Directory Structure
- Constants
- Routing
- Controllers
- Views
- Events
- HTTP Response
- HTTP Request
- HTTP Redirect
- HTTP Content Negotiation
- Storage and Files
- Rest
- Maintenance
- Regular Expression
- Response Cache
- DOM, XML, HTML, JSON and Arrays
- QuerySelector (CSS-selectors) with PHP
- Configuration
- Instalação
- Sobre
- Desempenho
- Estrutura das pastas
- Constantes
- Rotas
- Usando Controllers
- Usando Views
- Eventos
- Resposta HTTP
- Requisição HTTP
- Redirecionamento HTTP
- Negociação de Conteúdo HTTP
- Armazenamento e Arquivos
- Usando Rest
- Manutenção
- Expressão Regular
- Cache Resposta
- DOM, XML, HTML, JSON e Arrays
- QuerySelector (seletores-CSS) com PHP
- Configuração