Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilker

API DOM - Parte 1

Recommended Posts

API DOM - Parte 2

 

 

ae galera, vo posta algo + recente, a API DOM, para quem nao sabe, o DOM eh uma API criada para manuseamento de XML de forma aleatoria (nao linear, como no SAX), poucos conhecem e usam, essa API foi criada como fixa a partir da versao 5 do PHP, bom, agora dexando de papo furado, vamos ao script

 

nosso script, ao final, vamos ver como criar um XML que contem uma agenda com nomes, telefones e enderecos

 

primeiro vamos instanciar um objeto DOM:

 

<?php	$dom = new DOMDocument("1.0", "ISO-8859-1"); //versao 1.0 com encoding ISO-8859-1	$dom->preserveWhiteSpace = false; //descartar espacos em branco	$dom->formatOutput = true; //gerar um codigo bem legivel	?>

bom, como podemos ver, o DOM eh uma API orientada a objetos, oq eh mto bom, pra quem n sabe mexer com objetos em PHP, recomendo uma estudada pra entender melhor oq c passa

 

antes de proceguir, eh melhor explicar uma coisa, a estrutura do DOM, eh feita como a de uma arvore, existem os nos (galhos da arvore) e dentro dos nos, vao existindo nos internos (como em galhos de arvore), entao você deve procurar o elemento e pegar seus nos internos, eh + - assim q essa API funciona

 

segunda parte, vamos criar alguns nos:

 

createElement("agenda"); //cria o 1 no, todos os nos vao ser inseridos nesse	$contato = $dom->createElement("contato"); //cria um contato	$nome = $dom->createElement("nome", "Wilker Lucio da Silva"); //cria o nome	$telefone = $dom->createElement("telefone", "(0xx88) 3333-3333"); //cria telefone	$endereco = $dom->createElement("endereco", "Av. blablabla n 999"); //cria endereco

agora que ja criamos alguns nos, vamos colocá-los nos seus devidos lugares:

 

appendChild($nome); //adicionar o nome ao contato	$contato->appendChild($telefone); //adicionar o telefone	$contato->appendChild($endereco); //adicioanr endereco		$root->appendChild($contato); //adiciona esse contato	$dom->appendChild($root); //adiciona o root ao documento

agora vamos aos procedimentos finais:

 

$dom->save("contatos.xml"); //salvar arquivo		echo "Documento XML gerado:<br><br>";	echo "<pre>";	echo htmlspecialchars($dom->saveXML()); //imprimir conteudo na tela	echo "</pre>";

agora eu vo colocar aki o codigo todo junto pra ficar + facil de analizar:

 

$dom = new DOMDocument("1.0", "ISO-8859-1"); //versao 1.0 com encoding ISO-8859-1	$dom->preserveWhiteSpace = false; //descartar espacos em branco	$dom->formatOutput = true; //gerar um codigo bem legivel		$root = $dom->createElement("agenda"); //cria o 1 no, todos os nos vao ser inseridos nesse		$contato = $dom->createElement("contato"); //cria um contato	$nome = $dom->createElement("nome", "Wilker Lucio da Silva"); //cria o nome	$telefone = $dom->createElement("telefone", "(0xx88) 3333-3333"); //cria telefone	$endereco = $dom->createElement("endereco", "Av. blablabla n 999"); //cria endereco		$contato->appendChild($nome); //adicionar o nome ao contato	$contato->appendChild($telefone); //adicionar o telefone	$contato->appendChild($endereco); //adicioanr endereco		$root->appendChild($contato); //adiciona esse contato	$dom->appendChild($root); //adiciona o root ao documento		$dom->save("contatos.xml"); //salvar arquivo		echo "Documento XML gerado:<br><br>";	echo "<pre>";	echo htmlspecialchars($dom->saveXML()); //imprimir conteudo na tela	echo "</pre>";

bom, a 1 parte eh isso galera, o XML gerado deve ser isso:

<?xml version="1.0" encoding="ISO-8859-1"?><agenda>  <contato>	<nome>Wilker Lucio da Silva</nome>	<telefone>(0xx88) 3333-3333</telefone>	<endereco>Av. blablabla n 999</endereco>  </contato></agenda>

pode parecer complicado no comeco, mas depois q você entende, o DOM eh uma otima API para manusear XML, nessa 1 parte eu mostrei o basico para gerar XML, na 2 parte eu vou aprofundar a criacao de XML, e na 3 parte eu vou ensinar a ler arquivos XML com o DOM

 

ateh a proxima galera

 

 

 

API DOM - Parte 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera, gracas ao nosso amigo red neck *, resolvi fazer uma alteracao na parte final no codigo, a de exibir o XML na tela, vamos substituir:

echo "Documento XML gerado:<br><br>"; echo "<pre>"; echo htmlspecialchars($dom->saveXML()); //imprimir conteudo na tela echo "</pre>";

por:

header("Content-type: text/xml");echo $dom->saveXML();

assim o browser exibe o codigo coloridinho e talzhehehheh

Compartilhar este post


Link para o post
Compartilhar em outros sites

kara ficou muito bom seu tutorial mesmo, esperamos ver mais por aqui...abraçosMarcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa API só foi implementada no PHP 5, ela existe nas outras versoes tb, mas ela funciona de forma diferente, ela se tornou fixa na versao 5 (antes era um modulo experimental)

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinceramente eu n sei t explica kra (hUAEIohOAIEhoiAE)eh q tipo, eu n entendo mto de XML, eu entendo + de DOM (pq uso DOM pra PHP, XML Simples e Javascript)eu nem sei pra q serve isso de CDATA =Pbom kra, depois eu vo da uma estudada pra tentar t ajudar, c você quizer algo + imediato: www.php.net/domc der pra mexe com isso, com certeza vai ter ali ;) flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe valeu cara ....tipo, eh q eu nao uso o XML somente..uso-o junto com o Flash, e para q eu possa colocar links, tags de cor e tal no XML, precisa do CDATTA para o flash ler corretamente.....tipo, na verdade tava atras de algum script para editar o XML.. mas enquanto não acho vou continuar procurandovaleu cara, falo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, :)

O meu PHP não é o 5, mas funcionou legal, o único problema é que quando eu insiro um caractar special dentro da um dado da estrutura xml não da certo, não sei se é porque o meu não é a versão 5. :unsure:

 

Ta muito legal este tutorial, não podia vir em hora melhor.

 

Valeu http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, acentos eh realmente um bug do PHP, tanto na versao 4 qto na 5... acho q eles n olharam mto pra isso...essa foi a noticia ruima boa eh q tem como arrumar :) olha soh, você tem q usar sempre como ISO-8859-1e depois de baxar os dados, você passa eles por um utf8_decode() q eh uma funcao do PHP, com isso seu texto vai fica bunitinho ;) obs: tenho quase certeza q eh utf8_decode() mas c n for, eh utf8_encode()flww

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.