Fazer leitura de XML com php, está dando erro, alguém pode ajudar?

02/05/2015

0

PHP

Olá pessoal, estou fazendo uma integração do meu sistema de vendas com uma plataformas de pagamentos on line, e eles usam XML, até certo momento ocorreu tudo bem até que eu precisei usar o bendito XML pra inserir os dados no meu banco de dados, e está dando erro!

é o seguinte!

tenho o seguinte código que é o que o site fornece como exemplo para integração.

<?php 

$url = "https://go.gerencianet.com.br/teste/api/pagamento/xml";
$token = "token";

$xml = "<?xml version='1.0' encoding='utf-8'?>
        <integracao>
            <itens>
                <item>
                    <itemValor>500</itemValor>
                    <itemDescricao>Solicitacao de pagamento xml</itemDescricao>
                </item>
            </itens>
            <cliente>
                <nome>nome_cliente</nome>
                <cpf>cpf_cliente</cpf>
                <email>email_cliente</email>
                <nascimento>dt_nascimento_cliente</nascimento>
                <celular>cel_cliente</celular>
                <logradouro>logradouro_cliente</logradouro>
                <numero>numero_cliente</numero>
                <bairro>bairro_cliente</bairro>
                <cidade>cidade_cliente</cidade>
                <cep>cep_cliente</cep>
                <estado>estado_cliente</estado>
            </cliente>
        </integracao>";
 
$xml = str_replace(array("\n", "\r", "\t"), '', $xml);
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
$data = array("token" => $token, "dados" => $xml);
 
curl_setopt($ch, CURLOPT_POST, true);
 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
 
curl_close($ch);
 
echo "<xmp>".$response."</xmp>";

 ?>


ele me gera o seguinte XML

<?xml version="1.0" encoding="utf-8"?>
<integracao><status>2</status><resposta><transacao>11111</transacao><link>https://go.gerencianet.com.br/?b=11111/#/teste/pagar/11111-11111-11111</link></resposta></integracao>


e estou tentando fazer a leitura assim!

<?php
// Faz o load do arquivo XML e retorna um objeto
$arquivo_xml = simplexml_load_file('arquivo.php');
 
echo $arquivo_xml->resposta->link;
?>


ai é onde mora o problema, sempre da erro.
o erro que recebo sempre é este!

Warning: simplexml_load_file() [function.simplexml-load-file]: t.php:27: parser error : Extra content at the end of the document in /home/u330150777/public_html/l.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: </integracao>"; in /home/u330150777/public_html/l.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/u330150777/public_html/l.php on line 3


mas se eu pego o XML que gera no arquivo PHP e insiro em um arquivo .XML funciona tudo normal, eu podia até criar um arquivo XML e reescrever ele com esse código.

<?php
// Escreve o arquivo
$fp = fopen('meus_links.xml', 'w+');
fwrite($fp, $xml);
fclose($fp);
?>


mas eu queria evitar dar essa volta toda e ir direto ao ponto, alguém sabe e pode ajudar?
Cleyton Caetano

Cleyton Caetano

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar