Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala pessoal!!
Com base no curso do Wilker sobre API DOM, resolvi gerar um xml puchando dados de um bd.
Só que não que aparecem acentos complica tudo.
Se uso iso-8859-1 o xml é gerado até o momento em que aparece o primeiro acento, dai o script trava com os seguintes erros:
Warning: output conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: encoder erroroutput conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Se uso uft-8 o xml é gerado por completo mas os acentos são ignorados. Ficando assim as palavras:
Amanh? (Amanhã), Jos? (José)...Esse é o código do script:
<?function createContato($document, $nome, $data, $email, $texto, $aniversario, $id) { $contato = $document->createElement("contato"); $nomeN = $document->createElement("nome", $nome); $dataN = $document->createElement("data", $data); $emailN = $document->createElement("email", $email); $textoN = $document->createElement("texto", $texto); $idN = $document->createElement("id", $id); $contato->setAttribute("aniversario", $aniversario); $contato->appendChild($nomeN); $contato->appendChild($dataN); $contato->appendChild($emailN); $contato->appendChild($textoN); $contato->appendChild($idN); return $contato; } $dom = new DOMDocument("1.0", "ISO-8859-1");$dom->preserveWhiteSpace = false;$dom->formatOutput = true;$root = $dom->createElement("teste");mysql_connect("localhost", "ticarp_admin", "465446");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");while ($line = mysql_fetch_assoc($xml)) { $root->appendChild(createContato($dom, $line['nome'], $line['data'], $line['email'], $line['texto'], $line['aniversario'], $line['id']));}$dom->appendChild($root); $dom->save("contatos.xml");echo $dom->saveXML();?>Já li que se usasse iso-8859-1 e depois passasse um utf8_decode() sairia acentuado, mas o script trava antes conforme dito antes.
Conto com vcs!!! :D
Tiago.
boa saida cara!! :D vou tentar testar ela mais tarde! a principio larguei de mão a API DOM pra gerar o meu xml, tô fazendo na unha. :D Resumindo, a API DOM tá bugada quanto a essa questão de acentos?Valeu carinha!!Tiago.
Essa aqui foi minha saída:
<?mysql_connect("localhost", "ticarp_admin", "******");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");$versao = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";echo $versao;while ($line = mysql_fetch_assoc($xml)) { echo "<item id=\"".$line['data']."\">\n"; foreach ($line as $k => $l) { if ($k == "texto"){ echo "<".$k.">\n<![CDATA[".$l."]]>\n</".$k.">\n"; } elseif ($k != "data") { echo "<".$k.">".$l."</".$k.">\n"; } } echo "</item>\n";}?>
Aqui ela funcionando.
http://www.tiagoalencar.com/gerando_xml_bd_unha5.php
Tiago.
opabom, não é o DOM em si, é o proprio XML que não aceita acentos =/, tipo eu ainda nao aconselho a usar DOM, porque ele so virou padrao apartir do php5, entao ate o php5 dominar os servidores, eu nao aconselho..tipo que bao que você conseguiu resolver seu problema, so adiciona um detalhe para retornar um arquivo XML
> <?header("Content-type: text/xml");mysql_connect("localhost", "ticarp_admin", "******");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";while ($line = mysql_fetch_assoc($xml)) {echo "<item id=\"".$line['data']."\">\n";foreach ($line as $k => $l) { if ($k == "texto"){ echo "<".$k.">\n<![CDATA[".$l."]]>\n</".$k.">\n"; } elseif ($k != "data") { echo "<".$k.">".$l."</".$k.">\n"; }}echo "</item>\n";}?>
é isso[]'s
Olá...
boas novas amigos!
Estava com o mesmo problema, e resolvi da seguitne forma:
Usei a função utf8_encode() (ao contrário do que você ditou, usando o utf8_decode())
Funcionou que é uma beleza.
Espero ter ajudado.
abraços
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
>
Fala pessoal!!
Com base no curso do Wilker sobre API DOM, resolvi gerar um xml puchando dados de um bd.
Só que não que aparecem acentos complica tudo.
Se uso iso-8859-1 o xml é gerado até o momento em que aparece o primeiro acento, dai o script trava com os seguintes erros:
Warning: output conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: encoder erroroutput conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Se uso uft-8 o xml é gerado por completo mas os acentos são ignorados. Ficando assim as palavras:
Amanh? (Amanhã), Jos? (José)...Esse é o código do script:
<?function createContato($document, $nome, $data, $email, $texto, $aniversario, $id) { $contato = $document->createElement("contato"); $nomeN = $document->createElement("nome", $nome); $dataN = $document->createElement("data", $data); $emailN = $document->createElement("email", $email); $textoN = $document->createElement("texto", $texto); $idN = $document->createElement("id", $id); $contato->setAttribute("aniversario", $aniversario); $contato->appendChild($nomeN); $contato->appendChild($dataN); $contato->appendChild($emailN); $contato->appendChild($textoN); $contato->appendChild($idN); return $contato; } $dom = new DOMDocument("1.0", "ISO-8859-1");$dom->preserveWhiteSpace = false;$dom->formatOutput = true;$root = $dom->createElement("teste");mysql_connect("localhost", "ticarp_admin", "465446");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");while ($line = mysql_fetch_assoc($xml)) { $root->appendChild(createContato($dom, $line['nome'], $line['data'], $line['email'], $line['texto'], $line['aniversario'], $line['id']));}$dom->appendChild($root); $dom->save("contatos.xml");echo $dom->saveXML();?>Já li que se usasse iso-8859-1 e depois passasse um utf8_decode() sairia acentuado, mas o script trava antes conforme dito antes.
Conto com vcs!!! :D
Tiago.
tipo, você pode fazer um teste, funcionou numa aplicação que fiz... nao sei se ai funfaria
pega a string vinda do DOM passa por essa funcao e ve se funfa[]'s