Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, boa tarde!
Estou atravessando um dilema com leitura de xml. Já busquei a solução em todo o forum e não encontrei ainda. Veja bem, tinha feito um sisteminha para ler o xml que uma empresa disponibilizou, e o webservice deles era o seguinte:
<dartMetaConsulta>
<consultas>
<cpfCnpj>026.153.156-54</cpfCnpj>
<dataContrato>2012-10-02T00:00:00-03:00</dataContrato>
<nomeRazao>EMPRESA TAL</nomeRazao>
Desta forma, para ler o xml, eu usava no sistema o seguinte:
<?php
foreach($xml->dartMetaConsulta as $consultas)
{
echo '<tr>'; .... (segue)
Depois de um tempo, a empresa dona do xml, mudou a árvore e inseriu uma nova tag e preciso modificar o sisteminha para conseguir ler o xml. A nova árvore ficou assim:
<dartMetaConsulta>
<consultas>
<consulta>
<cpfCnpj>026.153.156-54</cpfCnpj>
<dataContrato>2012-10-02T00:00:00-03:00</dataContrato>
<nomeRazao>EMPRESA TAL</nomeRazao>
Observem que entrou a tag <consulta> e depois disso meu sisteminha não consegue mais exibir os dados. Alguém pode me ajudar?
Grande abraço a todos!
Mas não estou querendo gerar o xml, estou querendo ler o xml... :D
tudo bem, use o simples xml.
Ainda não consegui... :(
Tente utilizar a classe DOMDocument, é muito mais fácil.
Exemplo:
<?php
$source = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<dartMetaConsulta>
<consultas>
<consulta>
<cpfCnpj>026.153.156-54</cpfCnpj>
<dataContrato>2012-10-02T00:00:00-03:00</dataContrato>
<nomeRazao>EMPRESA TAL</nomeRazao>
</consulta>
<consulta>
<cpfCnpj>026.133.116-59</cpfCnpj>
<dataContrato>2013-10-12T00:00:00-03:00</dataContrato>
<nomeRazao>EMPRESA TAL 2</nomeRazao>
</consulta>
</consultas>
</dartMetaConsulta>
XML;
$DOMDocument = new DOMDocument( '1.0', 'UTF-8' );
$DOMDocument->preserveWhiteSpace = false;
$DOMDocument->loadXML( $source );
$consultas = $DOMDocument->getElementsByTagName( 'consulta' );
foreach( $consultas as $consulta ) foreach( $consulta->childNodes as $childNode )
{
printf( '<strong>%s:</strong> %s<br/>', $childNode->nodeName, $childNode->nodeValue );
}
echo '<hr>';
}
?>
Saída
cpfCnpj: 026.153.156-54
dataContrato: 2012-10-02T00:00:00-03:00
nomeRazao: EMPRESA TAL
---------------------------------------------
cpfCnpj: 026.133.116-59
dataContrato: 2013-10-12T00:00:00-03:00
nomeRazao: EMPRESA TAL 2
---------------------------------------------
use o componente simple xml, é realmente simples.