Wilker 3 Denunciar post Postado Maio 23, 2005 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
Void : 0 Denunciar post Postado Maio 24, 2005 legal meu fi, muito massa ... fácil compreendimento Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Maio 24, 2005 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
red neck * 0 Denunciar post Postado Maio 24, 2005 gracas ao nosso amigo RedNeck http://forum.imasters.com.br/public/style_emoticons/default/blush.gif :P , fico muito doido o tuto, ta legal mesmo ^^ fico esperando o segundo e o terceiro, opzz nao era para falar ne? rsss[]'s Compartilhar este post Link para o post Compartilhar em outros sites
Cerrito 0 Denunciar post Postado Maio 25, 2005 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
Leandro Vieira Pinho 0 Denunciar post Postado Junho 27, 2005 Isto só funciona com o PHP5? Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Junho 27, 2005 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
skuns 0 Denunciar post Postado Junho 27, 2005 muito bom Wilker.. so tenho uma duvida, como trabalho com o CDATTA neste caso?! exemplo: http://www.tverde.com.br/lucas/pleasure/no...as/noticias.xml tem como?! abraços Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Junho 27, 2005 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
skuns 0 Denunciar post Postado Junho 28, 2005 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
Dilux 0 Denunciar post Postado Julho 27, 2005 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
Wilker 3 Denunciar post Postado Julho 28, 2005 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
ticarp 0 Denunciar post Postado Setembro 28, 2005 Cara! Não to conseguindo acentuar de jeito nenhum!! Até fiz um post no forum principal: http://forum.imasters.com.br/index.php?showtopic=148235 Nesse teu exemplo aí... fiz apenas acentuar "Lúcio" e ja não funcionou! o script travou total!! Não sei oq fazer! Compartilhar este post Link para o post Compartilhar em outros sites