Ir para conteúdo

POWERED BY:

Arquivado

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

Leonardo Machado Moreira

[Resolvido] String para formar XML Dinamicamente

Recommended Posts

Fala pessoal , fui gerar um xml dinamicamente e estou com uma duvida,,,

 

no cabeçalho do xml tem uma serie de palavras reservadas do php como " e ?

 

$xml =" <?xml version=\"1.0\" encoding=\"windows-1250\" ?> ";

 

para as aspas eu acrescentei a barra, porem ele engasga na hora da interrogação que ele le como reservado e a barra ai nao funciona

 

tentei com o

 

$xml = sprintf("<'%s' xml version=\"1.0\" encoding=\"windows-1250\" '%s'>",'?','?');

 

mas o resultado é

 

<'?' xml version="1.0" encoding="windows-1250" '?'>

 

alguem sabe como fazer a interrogação entrar na string

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que estou gerando o xml dinamicamente o código

 

$Servidor = 'localhost';
		$NomeDB = 'brasil';
		$Usuario = 'root';
		$Senha = '303016ds';
		
		if(!($CMysql = mysql_connect($Servidor, $Usuario, $Senha)))
		{
			echo 'Não foi possível conectar ao MySQL';
			echo mysql_error();
			exit;
		}
		
		if(!($conexao = mysql_select_db($NomeDB, $CMysql)))
		{
			echo 'Não foi possível selecionar a base de dados';
			echo mysql_error();
			exit;
		}
		
		$SQL = 'Select * from linhasestados order by estado';
		if(!($Result = mysql_query($SQL, $CMysql)))
		{
			echo 'Não foi possivel realizar a consulta SQL';
			echo mysql_error();
			exit;
		}
		
		if(mysql_num_rows($Result)==0)
		{
			echo 'Não foi retornado nada na sua consulta SQL';
			exit;
		}
		
		
		$xml = sprintf("<'%s' xml version=\"1.0\" encoding=\"windows-1250\" '%s'>",'?','?');
		echo $xml;

 

mas nas duas ultimas linhas qdo eu comento-as ele roda normal ou quando uso strintf para tratar o <?,,, porem se eu tiro o sprintf ele da erro pois <? é palavra reservada, se eu separo < ? ja volta a funcionar mas nao forma um xml,,

 

ai que surge o problema?? como eu gero o cabeçalho do xml??

 

 

um exemplo de onde eu peguei e nao deu certo

 

http://www.revistaphp.com.br/artigo.php?id=82

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui funciona perfeitamente, sem interpretar o <? do <?xml:

 

PHP
$xml =

"<?xml version="1.0" encoding="iso-8859-1" ?>

<nome>Beraldo</nome>

";

 

$fopen = fopen("file.xml", "w");

fwrite($fopen, $xml);

fclose($fopen);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não aparece nada mesmo, pois eu programei somente para gerar um arquivo xml. Veja no diretório em que está o script. lá há o xml.

 

Mas você também pode dar um echo em $xml. Também pode ajustar com header(), para que o script seja interpretado como xml.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora essa codigo ele foi, mas o resultado deste echo é

 

 

$xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?> <Pessoa> <Nome teste = Teste>Leonardo<Nome/> <Idade> 18 </Idade>  </Pessoa> ";
echo $xml;

Leonardo 18

 

 

e não uma estrutura xml..

 

eu acho que o que falta é este header(),

 

seria isto

 

header("Content-type:application/xml; charset=utf-8");

 

ou melhor, oque esta função header faz nao consegui entender direito na biblioteca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o mesmo charset.

 

veja:

PHP
header("Content-type:application/xml; charset=iso-8859-1");

 

$xml = "<?xml version="1.0" encoding="iso-8859-1" ?>

<Pessoa>

  <Nome teste="Teste">Leonardo</Nome>

  <Idade>18</Idade>

</Pessoa>";

echo $xml;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele ta dando este erro,

 

 

Warning: Cannot modify header information - headers already sent by (output started at D:\Desenvolvimento\localhost\MySQL XML\mysql_xml.php:8) in D:\Desenvolvimento\localhost\MySQL XML\mysql_xml.php on line 10

 

da uma olhada no codigo eu mudei o jeito de gerar e to usando o DOM,, eu ja tirei o require_once, e substitui por codigo mesmo mas nao foi

 

<?
//		header("Content-type:application/xml; charset=utf-8"); 
		header("Content-type:application/xml; charset=iso-8859-1"); 

		require_once('conexao.php');
		
		$SQL = 'Select * from linhasestados order by estado';
		if(!($Result = mysql_query($SQL, $CMysql)))
		{
			echo 'Não foi possivel realizar a consulta SQL';
			echo mysql_error();
			exit;
		}
		
		if(mysql_num_rows($Result)==0)
		{
			echo 'Não foi retornado nada na sua consulta SQL';
			exit;
		}
		
		$XMLEstados = new DOMDocument('1.0', 'utf-8');
		$XMLEstados->formatOutput = true;
		
		$brasil = $XMLEstados->createElement('brasil');
		$brasil = $XMLEstados->appendChild($brasil); 
		
		while ($Linha = mysql_fetch_assoc($Result)) 
		{
		
			$estado = $XMLEstados->createElement('estado');
			$estado->setAttribute('nome', $Linha['Estado']);
			$estado->setAttribute('linhas', $Linha['Estado']);
			$estado = $brasil->appendChild($estado); 
			//echo " {$Linha['Estado']} {$Linha['Linhas']} <br> ";
		}		
		
		mysql_free_result($Result);

		
		echo $XMLEstados->saveXML(); 
		
	?>

 

 

 

http://www.rafaeldohms.com.br/2006/07/12/u...e-1-xml-dom/pt/

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.