Luizzzzzzzzzzzzzzzz Postado Abril 22, 2009 Denunciar Share Postado Abril 22, 2009 Pessoal...td bem?Preciso gerar um xml com registros vindos do MYSQL... alguém pode me orientar em como fazer isso?Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Abril 22, 2009 Denunciar Share Postado Abril 22, 2009 Como qualquer outra coisa que precisa ser escrita em um arquivo: fopen/fwrite/fclose. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Luizzzzzzzzzzzzzzzz Postado Abril 22, 2009 Autor Denunciar Share Postado Abril 22, 2009 Como qualquer outra coisa que precisa ser escrita em um arquivo: fopen/fwrite/fclose.Agradecendo como sempre as EXCELENTES respostas do nosso GRANDE amigo Eserra ... alguém mais pode me ajudar... eu consegui gerar a estrutura que desejo... porem falta eu gerar o arquivo xml com um nome que precisa ser dinamico a cada geração...passo abaixo o codigo:<?php $data = date("d/m/Y"); include"config.php";$sql = "select * from nuke_pages order by date DESC LIMIT 12"; $data = date("d/m/Y");$query = mysql_query($sql); // print o cabeçalho do xml header("Content-type: application/xml"); // cabeçalho do RSS echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>"; ?> <?php $data = date("d/m/Y"); include"config.php";$sql = "select * from nuke_pages order by date DESC LIMIT 12"; $data = date("d/m/Y");$query = mysql_query($sql); // print o cabeçalho do xml header("Content-type: application/xml"); // cabeçalho do RSS echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>"; ?> <rss version="2.0"> <channel> <title>Portal - Notícias</title> <link>http://www.nomedosite</link> <description>Últimas noticias - Portal</description> <language>pt-br</language> <copyright>Site - Todos os direitos reservados.</copyright> <image> <title>Portal</title> <width>78</width> <height>100</height> <link>http://www.nomedosite</link> <url>http://www.nomedosite/banner/banner.gif</url> </image> <webMaster>email@gmail.com</webMaster> <?php while($result = mysql_fetch_array($query)) { ?> <item> <title><? echo"$result[title]";?></title> <link> http://www.nomedosite/colunas-<? echo"$result[pid]";?>.html </link> <description> <? echo"$result[signature]";?> </description> </item> <?php } ?> </channel> </rss> ?>Eu abro a pagina em php e aparece toda a estrutura do XML...mas preciso que o php exporte um arquivo xml dentro de um diretorio no servidor... como faço isso??Obrigado pessoal...e o Eserra! :blush: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Abril 22, 2009 Denunciar Share Postado Abril 22, 2009 Lamentável o que a gente tem que aguentar... enfin como eu passei lá em cima: fopen, fwrite, fclose. O manual tem exemplos bem claros. Para gerar nomes aleatórios, sorteia os caracteres com rand, adivinha onde tem exemplos? No manual, é claro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 davi.feo Postado Abril 22, 2009 Denunciar Share Postado Abril 22, 2009 (editado) Como qualquer outra coisa que precisa ser escrita em um arquivo: fopen/fwrite/fclose.Agradecendo como sempre as EXCELENTES respostas do nosso GRANDE amigo Eserra ... alguém mais pode me ajudar... eu consegui gerar a estrutura que desejo... porem falta eu gerar o arquivo xml com um nome que precisa ser dinamico a cada geração...passo abaixo o codigo:...$data = date("d/m/Y"); include"config.php";$sql = "select * from nuke_pages order by date DESC LIMIT 12"; $data = date("d/m/Y");$query = mysql_query($sql); // print o cabeçalho do xml header("Content-type: application/xml"); .....Eu abro a pagina em php e aparece toda a estrutura do XML...mas preciso que o php exporte um arquivo xml dentro de um diretorio no servidor... como faço isso??Obrigado pessoal...e o Eserra! :blush:Olá Luiz, sou iniciante em programação orientada mas tem uma classe super simples de implantar que gera dinãmicamente arquivos .xml segue :1: xml_writer<?php /* * (English) * This file is part of filExp. * * filExp is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation. * * filExp is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with filExp. If not, see <http://www.gnu.org/licenses/>. * *** * (Português) * Este arquivo faz parto do filExp. * * filExp é um software livre: você pode redistribui-lo ou modificá-lo * sob os termos da GNU General Public License como publicada pela * Free Software Foundation. * * filExp está sendo distribuido no intuito de ser útil, * mas SEM NENHUMA GARANTIA; sem jamais implicar em garantia por * COMÉRCIO ou USO PARA PROPÓSITOS PARTICULARES. Veja a * GNU General Public License para mais detalhes. * * Você deve ter recebido uma cópia da GNU General Public License * junto com o filExp. Caso contrário, visite <http://ww.gnu.org/license/> * */ /** * @author Wanderson Regis Silva <wanderson@wandersonregis.com> * @version 0.1.0.0 2009-04-10 */ /** * Gerenciador de nós do documento */ class xml_node { /** * @var string O nome deste nó */ private $node; /** * @var string O conteúdo interno do nó */ private $contents; /** * @var array Os parâmetros do nó */ private $params; /** * @var mixed Os subnós */ private $nodes; /** * Inicializa o nó, com nome e possível conteúdo * @param string $nodename Nome do nó * @param string $contents Conteúdo do nó */ function __construct($nodename, $contents = '') { $this->itialize($nodename, $contents); } /** * Inicializa o nó, com nome e possível conteúdo, útil para limpar o conteúdo ou em classes herdeiras * @param string $nodename Nome do nó * @param string $contents Conteúdo do nó */ function itialize($nodename, $contents = '') { $this->node = str_replace(" ", "_", $nodename); $this->contents = $contents; $this->nodes = array(); $this->params = array(); } /** * Modifica o conteúdo textual do nó * @param string $contents O conteúdo textual * @param boolean $replace Se é para sobrescrever o conteúdo anterior (true) ou adicionar ao fim (false) */ function alter_node_content($contents, $replace = true) { if($replace) $this->contents = $contents; else $this->contents .= $contents; } /** * Adiciona um novo parâmetro * @param string $nodename Nome do novo nó * @param string $contents Conteúdo textual do nó */ function add_param($param, $content = '') { $count = count($this->params); $this->params[$count][0] = str_replace(" ", "_", $param); $this->params[$count][1] = $content; } /** * Adiciona um novo subnó * @param string $nodename Nome do novo nó * @param string $contents Conteúdo textual do nó */ function add_node($nodename, $contents = '') { $this->nodes[] = new xml_node($nodename, $contents); } /** * Adiciona uma árvore já pronta de nós * @param mixed $tree Árvore de nós */ function add_node_tree($tree) { $this->nodes[] = $tree; } /** * Retorna o total atual de subnós dentro deste nó * @return int */ function get_nodes_count() { return count($this->nodes); } /** * Retorna todos os subnós do nó atual * @return array */ function get_nodes() { return $this->nodes; } /** * Retorna um nó específico, em caso de nó um inexistente, retorna false * @param int Índice do nó * @return mixed */ function get_node($nodenumber) { if($nodenumber >= $this->get_nodes_count()) return false; return $this->nodes[$nodenumber]; } /** * Retorna a versão textual da extrutura * @return string A extrutura XML gerada */ function get_text_node() { $text = "<" . $this->node; for($i = 0; $i < count($this->params); $i++) { $text .= " " . $this->params[$i][0] . "=\"" . $this->params[$i][1] . "\""; } $text .= ">\n"; $text .= $this->contents . ( ! empty($this->contents) ? "\n" : NULL); if($this->get_nodes_count()) { for($i = 0; $i < $this->get_nodes_count(); $i++) { $text .= $this->nodes[$i]->get_text_node(); } } $text .= "</" . $this->node . ">\n"; return $text; } /** * Retorna umma array contendo a extrutura * @return array A extrutura XML gerada */ function get_array_node() { $array['name'] = $this->node; for($i = 0; $i < count($this->params); $i++) { $array['param'][] = array( 'name' => $this->params[$i][0], 'value' => $this->params[$i][1] ); } $array['content'] = $this->contents; $array['nodes'] = array(); if($this->get_nodes_count()) { for($i = 0; $i < $this->get_nodes_count(); $i++) { $array['nodes'][] = $this->nodes[$i]->get_array_node(); } } return $array; } } /** * Constrói uma extrutura de arquivo XML */ class xml_writer extends xml_node { /** * @var string Arquivo de saída */ private $filename; /** * @var string Arquivo css de estilização */ private $css; /** * @var string Arquivo XSLT de estilização */ private $xslt; /** * Inicializa a extrutura, com o possível node de arquivo de saída, com nome e possível conteúdo, útil para limpar o conteúdo ou em classes herdeiras * @param string $filename Nome do arquivo de saída * @param string $mainnode Nome do nó * @param string $maincontent Conteúdo do nó */ function __construct($filename = 'xmlfile.xml', $mainnode = 'xmlnode', $maincontent = '') { $this->filename = $filename; parent::itialize($mainnode, $maincontent); $this->css = array(); $this->xslt = array(); } /** * Adiciona um arquivo css para estilização * @param string $filename Nome do arquivo */ function add_css($filename) { $this->css[] = $filename; } /** * Adiciona um arquivo xslt para estilização * @param string $filename Nome do arquivo */ function add_xslt($filename) { $this->xslt[] = $filename; } /** * Envia a extrutura gerada para a saída do navegador */ function send() { header("Pragma: public\n"); header("Expires: 0\n"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0\n"); header("Content-Type: text/xml\n"); header("Content-Disposition: attachment;filename=" . $this->filename . "\n"); echo "<?xml version=\"1.0\" charset=\"utf-8\"?>\n"; if(count($this->css)) { foreach($this->css as $css) echo "<?xml-stylesheet type=\"text/css\" href=\"" . $css . "\"?>\n"; } if(count($this->xslt)) { foreach($this->xslt as $xslt) echo "<?xml-stylesheet type=\"text/xsl\" href=\"" . $xslt . "\"?>\n"; } echo parent::get_text_node(); } /** * Grava a extrutura gerada para um arquivo */ function write() { $data = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; if(count($this->css)) { foreach($this->css as $css) $data .= "<?xml-stylesheet type=\"text/css\" href=\"" . $css . "\"?>\n"; } if(count($this->xslt)) { foreach($this->xslt as $xslt) $data .= "<?xml-stylesheet type=\"text/xsl\" href=\"" . $xslt . "\"?>\n"; } $data .= $this->get_text_node(); $file = @fopen($this->filename, "w"); if($file) { fwrite($file, $data); fclose($file); return true; } else return false; } } ?> 2.sample.php <?php // Este exemplo irá criar um arquivo xml com dados de países e algus de seus estados include_once 'xml_writer.php'; // Inicia o arquivo XML $mundo = new xml_writer("MUITOLOCO.xml", "GOSTOSAS"); // Adiciona primeiramente um país $mundo->add_node("NASuecia", "a Suecia tem mulheres fantásticas -- "); $mundo->add_node("NASuecia", "a Suecia é show-- "); // Adiciona o nó Brasil ao XML // setando um a um dos nós $mundo->add_node("Brasil", "O Brasil fica na américa latina"); // Pra pegar o último nó (neste caso o nó do Brasil), basta pegar a contagem de nós e subtrair 1 $brasil = $mundo->get_node($mundo->get_nodes_count() - 1); // Adicionando parâmetros $brasil->add_param("Capital", "Brasília"); $brasil->add_param("Idioma", "Português"); $brasil->add_param("Sigla", "BR"); // Adiciona nós (subnós) ao último nó criado // Adiciona o nó Minas Gerais ao nó Brasil $brasil->add_node("Minas Gerais"); $brasil_minas = $brasil->get_node($brasil->get_nodes_count() - 1); $brasil_minas->add_param("Capital", "Belo Horizonte"); // Adiciona o nó São Paulo ao nó Brasil $brasil->add_node("São Paulo"); $brasil_sampa = $brasil->get_node($brasil->get_nodes_count() - 1); $brasil_sampa->add_param("Capital", "São Paulo"); // Adiciona o nó EUA ao XML $mundo->add_node("Estados Unidos Da América"); $eua = $mundo->get_node($mundo->get_nodes_count() - 1); // Adicionando parâmetros $eua->add_param("Capital", "Washington"); $eua->add_param("Idioma", "Inglês"); $eua->add_param("Sigla", "EUA"); // Aqui o nó do estado será criado e só depois adicionado ao nó do país $eua_ny = new xml_node("Nova Iorque"); $eua_ny->add_param("Capital", "Nova Iorque"); $eua->add_node_tree($eua_ny); // Definindo um arquivo CSS para modificar a exibição $mundo->add_css("estilo.css"); // Podem ser adicionados tantos arquivos de estilo quanto forem necessários // A outra opção seria usar um arquivo XSLT para isso // Neste caso a sintaxe seria: // $mundo->add_xslt("stilo.xsl"); // Grava em um arquivo $mundo->write(); header('location: mundo.xml'); // Outras possibilidades: // // Enviar para a saída do navegador // $mundo->send(); // // Obter a forma textual do arquivo, sem o cabeçalho padrão // $mundo->get_text_node(); // // Obter a extrutura gerada em um array // $mundo->get_array_node(); ?>Faça um teste com a sua aplicação.Espero ter ajudado, qualquer problema retorne por favor. Editado Abril 22, 2009 por davi.feo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Luizzzzzzzzzzzzzzzz Postado Abril 22, 2009 Autor Denunciar Share Postado Abril 22, 2009 Obrigado mister Davi... vou testar a classe que você me passou... valeu pela ajuda cara .... Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Abril 24, 2009 Denunciar Share Postado Abril 24, 2009 Para gerar XML use DOM, criar XML montando estilo txt é gambiarra, aprenda a criar um XML bem feito e com um nivel profissionalveja um exemplo que eu criei sobre DOM para gerar um XML dinamicamentehttp://forum.imasters.uol.com.br/index.php?showtopic=339929qualquer duvida só postar aqui Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Luizzzzzzzzzzzzzzzz
Pessoal...td bem?
Preciso gerar um xml com registros vindos do MYSQL... alguém pode me orientar em como fazer isso?
Obrigado!
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.