Ir para conteúdo

POWERED BY:

Arquivado

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

luizmelao

xml - php

Recommended Posts

Olá amigos

 

tenho um bd, onde um arquivo php pega as informacoes do bd e cria um xml.

 

esse é um codigo php......onde pega as informacoes do bd e cria o xml..........a estrutura do xml é essa........no final do fechamento de cada tag xml existe o \n, que é para pular de linha.

$conteudo  = "<question>\n";
	  $conteudo .= "<text>$pergunta</text>\n";
	  $conteudo  .= "<choices>\n";
	  $conteudo .= "<choice>$r1</choice>\n"; 
	  $conteudo .= "<choice>$r2</choice>\n";
	  $conteudo .= "<choice>$r3</choice>\n";
	  $conteudo .= "<choice>$r4</choice>\n";
	  $conteudo  .= "</choices>\n";
		  $conteudo .= "\n\n<answer>$certa</answer>\n";
	  $conteudo .= "</question>\n";

 

 

 

mas no arquiv xml está assim:

 

<quiz>
<question>
<text>(OAB-SP Vunesp - 25.02.2007 - 131º) 63. Aponte a alternativa que NÃO corresponde a norma da Constituição Federal.
</text>
<choices>
<choice>A prisão, exceto em flagrante delito, depende de decisão judicial fundamentada.
</choice>
<choice>Não se admite prova obtida por meios ilícitos.
</choice>
<choice>No terrorismo, não será admitida progressão de regime.
</choice>
<choice>As Comissões Parlamentares de Inquérito têm poderes de investigação próprios da autoridade judiciária.
</choice>
</choices>

</question>
</quiz>

 

 

o problema na leitura está aqui:

<choice>A prisão, exceto em flagrante delito, depende de decisão judicial fundamentada.
</choice>

e eu preciso que fique assim:

<choice>A prisão, exceto em flagrante delito, depende de decisão judicial fundamentada.</choice>

ja tirei o \n e nao deu certo..........e exite alguns exemplos que ele coloca uma quebra de texto no meio do texto do xml.....por exemplo:

 

<choice>A prisão, exceto em flagrante delito, depende de 
decisão judicial fundamentada.
</choice>

oq eu preciso fazer para essas tags ficarem certas??/

 

obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

POGramando:

<?php
$content = "";
if($fp = @fopen('seuarquivo.ext','r')) do {
	$content = @fgets($fp);
} while(!feof($fp));
fclose($fp);
//Controle das quebras de linha
@str_replace('\n','',$content);
$j=0;
$valor_br = 75; //Quantidade de caracteres antes de quebrar a linha.
for($i = 0;$i <= strlen($content);$i++)
{
	if($j == $valor_br) {
		$j = 0;
		$content[$i].="\n";
		continue;
	}
	$j++;
}
//Tiramos as quebras de linha antes das tags
$content = @str_replace('</choice>\n','</choice>',$content);
$content = @str_replace('<choice>\n','<choice>',$content);
$content = @str_replace('\n</choice>','</choice>',$content);
$content = @str_replace('\n<choice>','<choice>',$content);
?>

Ficou bem ridiculo (estou indo dormir agora,e fiz brincando/POGramando),mas espero que resolva seu problema.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tópico movido

Webstandards: CSS / XML / XHTML / HTML http://forum.imasters.com.br/public/style_emoticons/default/seta.gif PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, veja meu codigo inteiro ai.............

 

onde eu insiro esse codigo q tu me enviou????

 

obrigado pela ajuda

 

 

<?

$nome = $_POST['nome'];

$id_curso=$id_curso;

//CONECTA AO BANCO DE DADOS

$conn = @mysql_connect("localhost", "root","senha")

or die("ERRO NA CONEXÃO");

//SELECIONA A BASE DE DADOS A SER UTILIZADA

$db = @mysql_select_db("quiz", $conn)

or die("ERRO NA SELEÇÃO DA BASE DE DADOS");

 

$sql = @mysql_query("SELECT * FROM curso WHERE (curso.id_curso=$id_curso)")

or die("ERRO NO SQL");

while ($row=mysql_fetch_array($sql)){

$quantidade=$row["quantidade"];

}

 

$sql = @mysql_query("SELECT * FROM perguntas,curso WHERE (curso.id_curso=$id_curso) and (perguntas.id_curso=curso.id_curso) ORDER BY RAND() LIMIT $quantidade ")

or die("ERRO NO SQL");

 

 

$row = mysql_num_rows($sql);

 

 

//VERIFICA SE A PESQUISA RETORNOU ALGUMA LINHA

if($row > 0) {

 

//ARQUIVO

$arquivo = "./".$nome."/quiz.xml";

 

//ABRE O ARQUIVO(SE NÃO EXISTIR, CRIA)

$ponteiro = fopen($arquivo, "w");

 

//ESCREVE NO ARQUIVO XML

 

fwrite($ponteiro, "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");

fwrite($ponteiro, "<quiz>\n");

 

 

for($i=0; $i<$row; $i++) {

 

 

//PEGA OS DADOS DO SQL

 

$id_pergunta = mysql_result($sql,$i,"id_pergunta");

$pergunta= mysql_result($sql,$i,"pergunta");

$r1= mysql_result($sql,$i,"r1");

$r2= mysql_result($sql,$i,"r2");

$r3= mysql_result($sql,$i,"r3");

$r4= mysql_result($sql,$i,"r4");

 

$certa= mysql_result($sql,$i,"certa");

 

 

 

$pergunta= utf8_encode($pergunta);

$r1= utf8_encode($r1);

$r2= utf8_encode($r2);

$r3= utf8_encode($r3);

$r4= utf8_encode($r4);

$certa= utf8_encode($certa);

 

 

$conteudo = "<question>\n";

 

$conteudo .= "<text>$pergunta</text>\n";

 

$conteudo .= "<choices>\n";

$conteudo .= "<choice>$r1</choice>\n";

$conteudo .= "<choice>$r2</choice>\n";

$conteudo .= "<choice>$r3</choice>\n";

$conteudo .= "<choice>$r4</choice>\n";

$conteudo .= "</choices>\n";

$conteudo .= "\n\n<answer>$certa</answer>\n";

$conteudo .= "</question>\n";

 

 

 

//ESCREVE NO ARQUIVO

 

fwrite($ponteiro, $conteudo);

}//FECHA FOR

 

//FECHA A TAG AGENDA

fwrite($ponteiro, "</quiz>");

 

//FECHA O ARQUIVO

fclose($ponteiro);

 

 

}//FECHA IF($row)

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Rapaziada, obrigado pelas ajudassss...........

 

Consegui criar o xml..........

 

o codigo é esse:

 

<?

$link = mysql_connect('localhost','root','senha');

mysql_select_db('quiz',$link);

 

$result = mysql_query("SELECT * FROM perguntas ORDER BY RAND() LIMIT 5");

 

$doc = new DOMDocument('1.0', 'UTF-8');

$root = $doc->createElement('quiz');

$root = $doc->appendChild($root);

 

while($row = mysql_fetch_assoc($result))

{

// add node for each record

$car= $doc->createElement('question');

$car = $root->appendChild($car);

foreach($row as $fieldname => $fieldvalue)

{

$child = $doc->createElement($fieldname);

$child = $car->appendChild($child);

//add data to the new element

$value = $doc->createTextNode($fieldvalue);

$value = $child->appendChild($value);

}

}

 

echo 'Wrote: ' . $doc->save("cars.xml") . ' bytes';

 

$node = $doc->createElement('car');

 

$node = $root->appendChild($node);

 

$node->setAttribute('name', 'car name from DB');

?>

 

 

apareceu assim:

 

<quiz>

<question>

<id_pergunta>1305</id_pergunta>

<pergunta>

(OAB- SP Vunesp - 07.12.2003 � 122�) As express�es que imp�em ao advogado: �ser fiel � verdade�, �aprimorar-se no culto dos princ�pios e no dom�nio da ci�ncia jur�dica� e �lutar sem receio pelo primado da Justi�a� est�o contidas

</pergunta>

<r1>

no Estatuto da Advocacia e seu Regulamento Geral.

 

</r1>

<r2>nos C�digos de Processo Civil e Processo Penal.

 

</r2>

 

<r3>

na Portaria n.o 1.886/94 do MEC, ao estabelecer a grade curricular para os Cursos Jur�dicos no Brasil.

 

</r3>

<r4>no pre�mbulo do C�digo de �tica e Disciplina.

 

</r4>

<certa>no pre�mbulo do C�digo de �tica e Disciplina.

 

</certa>

 

</question>

</quiz>

 

ele puxa os nomes dos atributos do definidos no BD

 

o problema está na seguinte situacao. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

<r1></r1>

<r2></r2>

<r3></r3>

<r4> </r4>

 

teriam q ser substituidos por

 

<choice></choice>

<choice></choice>

<choice></choice>

<choice></choice>

 

 

o que fazer nesse caso????

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.