Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Geração de XML, não funciona como o esperado


Rafael Laurindo

Pergunta

Galera, esse código abaixo só está mostrando somente a última linha da consulta.

<?php

 $pdo = new PDO('mysql:host=localhost;dbname=sample', 'root', '');

 $pessoas = "
     select *
     from pessoa
     order by nome
 ";

 $stmt = $pdo->query($pessoas);

 //gera o XML-------------------------------------------------
 $charset = 'UTF-8';
 $encoding = "\"".$charset."\"";

 while ($pessoa = $stmt->fetch()){
     $xml = "\n<pessoa>\n";
     $xml .= "\t<id>$pessoa[id]</id>\n";
     $xml .= "\t<nome>$pessoa[nome]</nome>\n";
     $xml .= "</pessoa>";
 }
 header("Content-type: application/xml; $charset");
  $header = "<?xml version=\"1.0\" encoding=$encoding ?>"; //o \" insere um ". Não pode ficar enconstado em outra string
  echo $header;
 echo $xml;

Alguém pode me dizer porque?

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

É verdade. Mas agora está retornando as linhas à saber:

Erro no processamento de XML: caracteres sem utilidade após um elemento do documento

Posição: http://localhost/SAMPLE/make_xml.php

Número da linha 6, coluna 1:

<pessoa>

^

No código fonte aparece isso

<?xml version="1.0" encoding="UTF-8" ?>
<pessoa>
    <id>2</id>
    <nome>Rafael</nome>
</pessoa>
<pessoa>
    <id>1</id>
    <nome>Tatiana</nome>
</pessoa>

Não entendi nada. Ele mostra erro, mas gera o código certinho no código fonte. O mais engraçado é, se eu mantiver só um registro no banco, aí sim, ele da erro. Alguma sugestão?

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

  • 0

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$pessoas = "
            SELECT 
                *
            FROM 
                demo
            ORDER BY 
                id
            ";
$stmt = $pdo->query($pessoas);
//gera o XML-------------------------------------------------
$charset    = 'UTF-8';
$encoding   = "\"".$charset."\"";
$xml        = '<dados>';
while ($pessoa = $stmt->fetch())
{
    $xml.= sprintf('<registro>');
    $xml.= sprintf('<id>%d</id>', $pessoa['id']);
    $xml.= sprintf('<data>%s</data>', $pessoa['data']);
    $xml.= sprintf('<valor>%s</valor>', $pessoa['valor']);
    $xml.= sprintf('</registro>');
}
$xml        .= '</dados>';
$header     = '<?xml version="1.0" encoding='.$encoding.' ?>'; 
$output     = $header.$xml;
header("Content-type: application/xml; $charset");
echo $output;
Saida
<?xml version="1.0" encoding="UTF-8" ?><dados><registro><id>1</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>2</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>3</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>4</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>5</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>6</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>7</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>8</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>9</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>10</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>11</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>12</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>13</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>14</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>15</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>16</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>17</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>18</id><data>2010-01-15 16:06:34</data><valor></valor></registro><registro><id>19</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>20</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>21</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>22</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>23</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>24</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>25</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>26</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>27</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>28</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>29</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>30</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>31</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>32</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>33</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>34</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>35</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>36</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>37</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>38</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>39</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>40</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>41</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>42</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>43</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>44</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>45</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>46</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>47</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>48</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>49</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>50</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>51</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>52</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>53</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>54</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>55</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>56</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>57</id><data>2010-01-15 16:06:35</data><valor></valor></registro><registro><id>58</id><data>2010-01-15 16:06:35</data><valor></valor></registro></dados>

Editado por ursolouco
Link para o comentário
Compartilhar em outros sites

  • 0

Bom, vamos lá... pegando na mãozinha do programador

comando:

SHOW CREATE TABLE demo;
resultado:
CREATE TABLE `demo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `valor` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1
preenchendo a tabela:
insert into `demo` (`id`, `data`, `valor`) values('1','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('2','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('3','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('4','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('5','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('6','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('7','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('8','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('9','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('10','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('11','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('12','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('13','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('14','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('15','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('16','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('17','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('18','2010-01-15 16:06:34',NULL);
insert into `demo` (`id`, `data`, `valor`) values('19','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('20','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('21','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('22','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('23','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('24','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('25','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('26','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('27','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('28','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('29','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('30','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('31','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('32','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('33','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('34','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('35','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('36','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('37','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('38','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('39','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('40','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('41','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('42','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('43','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('44','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('45','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('46','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('47','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('48','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('49','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('50','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('51','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('52','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('53','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('54','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('55','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('56','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('57','2010-01-15 16:06:35',NULL);
insert into `demo` (`id`, `data`, `valor`) values('58','2010-01-15 16:06:35',NULL);
sb.php
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$pessoas = "
            SELECT
                *
            FROM
                demo
            ORDER BY
                id
            ";
$stmt = $pdo->query($pessoas);
//gera o XML-------------------------------------------------
$charset    = 'UTF-8';
$encoding   = "\"".$charset."\"";
$xml        = '<dados>';
while ($pessoa = $stmt->fetch())
{
    $xml.= sprintf('<registro>');
    $xml.= sprintf('<id>%d</id>', $pessoa['id']);
    $xml.= sprintf('<data>%s</data>', $pessoa['data']);
    $xml.= sprintf('<valor>%s</valor>', $pessoa['valor']);
    $xml.= sprintf('</registro>');
}
$xml        .= '</dados>';
$header     = '<?xml version="1.0" encoding='.$encoding.' ?>';
$output     = $header.$xml;
header("Content-type: application/xml; $charset");
echo $output;
<?php

$pdo = new PDO('mysql:host=localhost;dbname=sample', 'root', '');

$pessoas = "
    select *
    from pessoa
    order by nome
";

$stmt = $pdo->query($pessoas);

//gera o XML-------------------------------------------------
$charset = 'UTF-8';
$encoding = "\"".$charset."\"";
$header = "<?xml version=\"1.0\" encoding=$encoding ?>"; //o \" insere um ". Não pode ficar enconstado em outra string
$xml = '';

while ($pessoa = $stmt->fetch()){
    $xml .= sprintf('<pessoa>');
    $xml .= sprintf('<id>%d</id>',$pessoa['id']);
    $xml .= sprintf('<nome>%s</nome>',$pessoa['nome']);
    $xml .= sprintf('</pessoa>');
}

$output = $header.$xml; //header primeiro, corpo depois
header("Content-type: application/xml; $charset");
echo $output;

Erro no processamento de XML: caracteres sem utilidade após um elemento do documento

Posição: http://localhost/SAMPLE/make_xml.php

Número da linha 1, coluna 86:<?xml version="1.0" encoding="UTF-8" ?><pessoa><id>2</id><nome>Rafael</nome></pessoa><pessoa><id>1</id><nome>Tatiana</nome></pessoa>

---------------------------------------------------------------------------------------------------------------------------------------------------^

E agora?

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...