• Nenhum resultado encontrado

SimpleXML: Integrando PHP e XML de maneira simples. Anderson Casimiro

N/A
N/A
Protected

Academic year: 2021

Share "SimpleXML: Integrando PHP e XML de maneira simples. Anderson Casimiro"

Copied!
22
0
0

Texto

(1)

PHP Conference

PHP Conference

SimpleXML: Integrando PHP e

SimpleXML: Integrando PHP e

XML de maneira simples

XML de maneira simples

Anderson Casimiro

(2)

Quem é esse cara?

Quem é esse cara?

Coordenador de TI

Desenvolvedor há mais de 4 anos

Entusiasta PHP

Áreas: Saúde, RH e Comercial

Master PHP5 - Brainbench

(3)

XML

XML

eXtensible Markup Language

Compatível com SGML

Sintaxe Simples

Regras idem

HTML não é XML

(4)

XML

XML

Criado para “guardar” informação

Formato uniforme

Independente de plataforma

Principais usos:

– Configuração

– Armazenamento de dados

– Transferência de informação uniforme

● Arquivos de troca ● webservices

(5)

XML: agenda.xml

XML: agenda.xml

<?xml version="1.0" encoding="UTF-8"?> <agenda>

<contato id="1">

<nome>Anderson Casimiro</nome>

<email>anderson@duodraco.com</email>

</contato>

<contato id="2">

<nome>Fulano de Tal</nome>

<email>fulando@de.tal</email>

</contato>

(6)

PHP+XML: Como lidar?

PHP+XML: Como lidar?

Parsing (Classes e Funções)

P.E.A.R.

– PHP Extension and Application Repository

– pear.php.net

SOX (Simple API for XML)

DOM (Document Object Model)

SimpleXML

(7)

SimpleXML

SimpleXML

Nativa do PHP5

Uso fácil e descomplicado

Estrutura de objetos

XPATH

DOM

(8)

4 Regras

4 Regras

Propriedades: iterador de elementos

Índices numéricos: elementos

Índices não-numéricos: atributos

(9)

Mãos à obra

Mãos à obra

SimpleXMLElement simplexml_load_file(string arquivo[,...] ) SimpleXMLElement simplexml_load_string(string dados[,...] ) *retornam FALSE se falhar

<?php

$sxo = simplexml_load_file("teste.xml");

print_r($sxo);

// Onde $sxo recebe uma instância da

// Classe SimpleXMLElement, referente ao // nó raiz (agenda) do arquivo agenda.xml

(10)

Anatomia...

Anatomia...

SimpleXMLElement Object ( [contato] => Array (

[0] => SimpleXMLElement Object (

[@attributes] => Array ([id] => 1) [nome] => Anderson Casimiro

[email] => anderson@duodraco.com )

[1] => SimpleXMLElement Object(

[@attributes] => Array([id] => 2) [nome] => Fulano de Tal

[email] => fulando@de.tal )

) )

(11)

Na prática...

Na prática...

<?php

$sxo = simplexml_load_file("agenda.xml"); echo $sxo->contato[0]["id"]; //1

echo $sxo->contato[0]->nome; //Anderson Casimiro

echo $sxo->contato[1]->email;

//fulando@de.tal

(12)

XPath

XPath

Linguagem base p/

busca de informação

Topo da XSLT

XQuery e XPointer:

construídos sob o

XPath

(13)

XPath

XPath

<?php

/*...*/

//Email contato com id=2

$sxo->xpath('//contato[@id=2]/email');

//Email contato com nome='Anderson Casimiro'

$sxo->xpath("/agenda/contato[nome='Anderson

Casimiro']/email");

//nome do ultimo contato

$sxo->xpath("/agenda/contato[last()]/nome");

//email do contato 1

$sxo->xpath("/agenda/contato[1]/email");

(14)

SimpleXML + DOM

SimpleXML + DOM

<?php

$dom = new domDocument;

$xml = <<<XML <agenda> <contato> <nome>Anderson</nome> </contato> </agenda> XML; $dom->loadXML(); $s = simplexml_import_dom($dom);

echo $s->contato[0]->nome; // Anderson

?>

(15)

Editando o XML

Editando o XML

<?php

header("Content-Type:text/plain");

$sxo = simplexml_load_file("example.xml");

$sxo->addChild("contato");

$sxo->contato[2]->addChild("name","Livea");

$sxo->contato[2]->addChild("email","--");

$sxo->contato[2]->addAttribute("id","3");

$x = $sxo->xpath('/agenda/contato[last()]');

print_r($x);

(16)

Voltando ao XML

Voltando ao XML

<?php

header("Content-Type:text/plain");

$sxo = simplexml_load_file("agenda.xml");

$sxo->contato[1]->email = "beltrano@de.tal";

$sxo->contato[1]["id"] = "fulano";

echo $sxo->contato[1]->asXML();

/*imprime: <contato id="fulano"> <nome>Fulano de Tal</nome> <email>beltrano@de.tal</email> </contato> */ ?>

(17)

O novo agenda.xml

O novo agenda.xml

<?xml version="1.0" encoding="UTF-8"?> <agenda>

<contato id="1">

<nome>Anderson Casimiro</nome>

<email>anderson@duodraco.com</email>

</contato>

<contato id="fulano">

<nome>Fulano de Tal</nome>

<email>fulando@de.tal</email>

</contato>

<contato id="3">

<nome>Livea</nome>

<email>--</email>

</contato> </agenda>

(18)

Nem tudo é perfeito

Nem tudo é perfeito

SimpleXML não é uma boa saída para

arquivos muito grandes

– Peca principalmente em performance

– Para esses casos utilize preferencialmente

XMLReader e XMLWriter

Não tem métodos nativos para remoção

de elementos

(19)

Aplicação - SimpleXML

Aplicação - SimpleXML

Agenda [ CRUD ]

– Inserir [ Create ]

– Listar contatos [ Retrieve ]

– Editar [ Update ] – Excluir [ Delete ] ●

Contato

– nome – endereço – telefone

(20)

Até que enfim...

Até que enfim...

(21)

Referência

Referência

www.php.net

www.wikipedia.com

www.xmlbr.com.br

www.w3schools.com

PHP5 – Programação Poderosa

Gutmans-Bakken-Rethans

(22)

Autor

Autor

Anderson de Arruda Casimiro

www.duodraco.com

anderson@duodraco.com

+55 11 9465.3590

DUODRACO

DUODRACO

Referências

Documentos relacionados

• A operação Hole3 foi criada em um esboço que pode ser usado como caminho para o próximo padrão.. No navegador, expanda a operação Hole3 para expor a

A empresa conquistou um espaço relevante no mercado nacional e internacional das indústrias de material de escritório e escolar, sendo constantemente reconhecida através

moderna e atual, guiada pelos conhecimentos de fisiologia e as evidências literárias tanto dos experimentos de laboratório, como pelos ensaios clínicos randomizados

Uma decisão acertada aqui representa um passo muito importante em direção ao sucesso pela seguinte razão: se você tem um bom produto, para o qual existe uma boa demanda, todo

O certificado da Nossa Senhora de Fátima foi entregue, no dia 2 de dezembro, pelo pesquisador da Embrapa Gado de Corte, Ezequiel do Valle, durante uma reunião comemo- rativa, da

Acondroplasia FGFR3 Análise da mutação c.1138G&gt;A/C no gene FGFR3 Sequenciamento Sanger Sangue EDTA ou Sangue em papel de filtro (Para saliva cobrar o valor do

A figura acima ilustra o modelo para pequenos sinais, ope- rando na faixa de médias freqüências, de um circuito transistorizado na configuração emissor comum... As linhas horizontais

Da exigibilidade ou não da presença dos requisitos da prevalência e da superioridade para a admissibilidade de ação civil pública para a tutela reparatória de danos a