Resgatar dados do XML padrão TISS como?

362 views
Skip to first unread message

Franklin Carneiro Carvalho

unread,
May 20, 2011, 7:58:55 AM5/20/11
to list...@googlegroups.com
Pessoal bom dia,

Estou tentando resgatar dados de um xml no padrão TISS, mas não estou conseguindo. Segue abaixo padrão TISS

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ansTISS:cabecalho>
  <ansTISS:identificacaoTransacao>
    <ansTISS:tipoTransacao>ENVIO_LOTE_GUIAS</ansTISS:tipoTransacao>
    <ansTISS:sequencialTransacao>19</ansTISS:sequencialTransacao>
    <ansTISS:dataRegistroTransacao>2011-02-17</ansTISS:dataRegistroTransacao>
    <ansTISS:horaRegistroTransacao>18:12:40</ansTISS:horaRegistroTransacao>
  </ansTISS:identificacaoTransacao>
  <ansTISS:origem>
    <ansTISS:codigoPrestadorNaOperadora>
      <ansTISS:CNPJ>32834251000168</ansTISS:CNPJ>
    </ansTISS:codigoPrestadorNaOperadora>
  </ansTISS:origem>
  <ansTISS:destino>
    <ansTISS:registroANS>343463</ansTISS:registroANS>
  </ansTISS:destino>

e continua....

Estou tentando pegar a informação do Registro ANS mas não estou conseguindo: 

Estou fazendo dessa forma:

$xml = simplexml_load_file('$arquivo');
foreach ($xml->cabecalho->destino as $item) {  //se colocar tudo que tem no xml "ansTISS:registroANS" ele dar erro.

echo $item->registroANS; // variavel que recebe o campo title

}

Att,

           
Franklin Carneiro Carvalho
Desenv.WEB/Adm.do site
http://www.socurticao.net
   O site da Galera!!!


Cassiano Ricardo Mourão

unread,
May 20, 2011, 8:02:31 AM5/20/11
to list...@googlegroups.com
Provavelmente não é o certo, mas logo de cara pra testar eu simplesmente removeria a string ansTISS: do XML e depois testaria =P

--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA NODE.JS > https://groups.google.com/group/lista-nodejs?hl=pt-br
--
PHP MAGAZINE > http://www.phpmagazine.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Franklin Carneiro Carvalho

unread,
May 20, 2011, 8:04:51 AM5/20/11
to list...@googlegroups.com
Obrigado pela resposta, mas se eu remover o ansTISS: ae vai fugir dos padrões da ANS.

Att,

           
Franklin Carneiro Carvalho
Desenv.WEB/Adm.do site
http://www.socurticao.net
   O site da Galera!!!



Franklin Carneiro Carvalho

unread,
May 20, 2011, 8:16:45 AM5/20/11
to list...@googlegroups.com
Apesar de saber que foge dos padrões fiz o teste para ver se funcionava retirando a string ansTISS: e advinha? não funcionou...rsr

dar o erro Warning: Invalid argument supplied for foreach() in C:\apache2triad\htdocs\xml2\valida_xml.php on line 75

linha 75    foreach ($xml->cabecalho->destino as $item) {

Att,

           
Franklin Carneiro Carvalho
Desenv.WEB/Adm.do site
http://www.socurticao.net
   O site da Galera!!!



Cassiano Ricardo Mourão

unread,
May 20, 2011, 8:19:30 AM5/20/11
to list...@googlegroups.com
Hehe, é pq como vc só precisa ler, achei q mesmo fora do padrão não teria problema.

Vamos então aguardar alguém iluminar =D

Cassiano Ricardo Mourão

unread,
May 20, 2011, 8:22:28 AM5/20/11
to list...@googlegroups.com

Franklin Carneiro Carvalho

unread,
May 20, 2011, 11:24:05 AM5/20/11
to list...@googlegroups.com
RESOLVIDO: 

Pessoal utilizei a classe SimpleLargeXMLParser

e pego os registros assim:

$xmlparse = SimpleLargeXMLParser::parseXML($arquivo);

$versaoxml = $xmlparse[0]['ansTISS:cabecalho'][0]['ansTISS:versaoPadrao'][0];

Obrigado Cassiano pela atenção.

Att,

           
Franklin Carneiro Carvalho
Desenv.WEB/Adm.do site
http://www.socurticao.net
   O site da Galera!!!



QI.VOLMAR QI

unread,
May 20, 2011, 12:48:56 PM5/20/11
to list...@googlegroups.com
$xml->cabecalho->{"ansTISS:cabecalho"}?

Heron Santos

unread,
May 20, 2011, 6:35:55 PM5/20/11
to list...@googlegroups.com
Cara,

Primeiro ver se o SimpleXML irá reportar erro.
Depois ver com o var_dump como ele formata.

Aí, só seguir a logica se usará objeto ou array.

Abraços,
Heron Santos
Analista / Desenvolvedor WEB

www.heronsantos.com
+55 (21) 92645688

Antes de imprimir, pense em sua responsabilidade e compromisso com o meio ambiente.

Franklin Carneiro Carvalho

unread,
Jun 10, 2011, 3:17:05 PM6/10/11
to list...@googlegroups.com
Pessoal estou com um probleminha...

Existe 2 tipos de estrutura nos arquivos xml do padrão TISS o novo 2.02.03 e os anteriores.

Para a versão nova a tag para que eu possa consultar seria: ansTISS:cabecalho nos modelos antigos é ans:cabecalho

Afim de resgatar o número da versão do arquivo, faço o seguinte no codeIgniter

//Se a versão for inferior a 2_02_03 ele utiliza esse comando
    $versaoxml = $xmlparse[0]['ans:cabecalho'][0]['ans:versaoPadrao'][0];
    $seqTransacao = $xmlparse[0]['ans:cabecalho'][0]['ans:identificacaoTransacao'][0]['ans:sequencialTransacao'][0];
   
    //Se for igual a 2_02_03 utiliza esse
    if (empty($versaoxml)):

        $versaoxml = $xmlparse[0]['ansTISS:cabecalho'][0]['ansTISS:versaoPadrao'][0];
        $seqTransacao = $xmlparse[0]['ansTISS:cabecalho'][0]['ansTISS:identificacaoTransacao'][0]['ansTISS:sequencialTransacao'][0];
    endif;

Com esse código consigo resgatar tranquilamente o problema é que quando a versão é 2_02_03 eu recebo uma mensagem de WARNING do CODEIGNITER informando que o index ans:cabecalho não foi informado....algo assim! justamente porque não existe essa tag no arquivo XML.

O que eu posso fazer, para tirar esse warning? alguma luz?



Att,

           
Franklin Carneiro Carvalho
Desenv.WEB/Adm.do site
http://www.socurticao.net
   O site da Galera!!!



Reply all
Reply to author
Forward
0 new messages