Ler XML Tag com Prefixo em PHP
14/01/2015
0
estou tendo dificuldade em ler um arquivo XML em que as Tags possuem prefixo.
Ex:
<a:titulo>
<a:subtitulo>Teste</a:subtitulo>
</a:titulo>
Estou usando a função $xml = simplexml_load_file() porém ela não está lendo as tags.
Alguém pode me ajudar?
Obrigado
Alex William
Posts
15/01/2015
William
E nesse link o usuário conseguiu resolver o problema utilizando o método que citei acima http://forum.imasters.com.br/topic/311971-ler-xml-com-prefixo-no-php/
15/01/2015
Alex William
Notice: Undefined index: cabecalho in efetua_importacao.php on line 53
começo do XML:
<ans:mensagemTISS xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_02_00.xsd"> <ans:cabecalho> <ans:identificacaoTransacao> <ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao> <ans:dataRegistroTransacao>2014-12-22</ans:dataRegistroTransacao> <ans:horaRegistroTransacao>11:15:01</ans:horaRegistroTransacao> </ans:identificacaoTransacao>
Código que uso para leitura:
if(move_uploaded_file($_FILES['arquivo']['tmp_name'],'TISSLotes/sp_sadt/'.$arquivo)) { $arq = file_get_contents('TISSLotes/sp_sadt/'.$arquivo); $xml = new SimpleXMLElement($arq); $campos = $xml->getNamespaces(true); foreach($xml->children($campos['cabecalho']) as $cabecalho) { echo $cabecalho->identificacaoTransacao; } }
Segui mais ou menos os mesmos passos do post que foi mostrado na resposta acima, e não funcionou.
O erro ocorre no foreach.
15/01/2015
Alex William
Notice: Undefined index: cabecalho in efetua_importacao.php on line 53
começo do XML:
<ans:mensagemTISS xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_02_00.xsd"> <ans:cabecalho> <ans:identificacaoTransacao> <ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao> <ans:dataRegistroTransacao>2014-12-22</ans:dataRegistroTransacao> <ans:horaRegistroTransacao>11:15:01</ans:horaRegistroTransacao> </ans:identificacaoTransacao>
Código que uso para leitura:
if(move_uploaded_file($_FILES['arquivo']['tmp_name'],'TISSLotes/sp_sadt/'.$arquivo)) { $arq = file_get_contents('TISSLotes/sp_sadt/'.$arquivo); $xml = new SimpleXMLElement($arq); $campos = $xml->getNamespaces(true); foreach($xml->children($campos['cabecalho']) as $cabecalho) { echo $cabecalho->identificacaoTransacao; } }
Segui mais ou menos os mesmos passos do post que foi mostrado na resposta acima, e não funcionou.
O erro ocorre no foreach.
RESOLVIDO!!!!
Na hora de fazer o foreach, estava chamando:
$xml->children($campos['cabecalho'])
E não é assim, tem que chamar o prefixo, no caso "ans".
Então no foreach, tem que ficar:
$xml->children($campos['ans'])
15/01/2015
William
Estou encerrando o tópico.
Clique aqui para fazer login e interagir na Comunidade :)