Ler XML Tag com Prefixo em PHP
Olá pessoal,
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
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
Curtidas 0
Respostas
William
14/01/2015
Dê uma olhada no manual do PHP sobre como identificar namespaces http://php.net/manual/pt_BR/simplexmlelement.getnamespaces.php.
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/
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/
GOSTEI 0
Alex William
14/01/2015
Ainda não funcionou, da erro:
Notice: Undefined index: cabecalho in efetua_importacao.php on line 53
começo do XML:
Código que uso para leitura:
Segui mais ou menos os mesmos passos do post que foi mostrado na resposta acima, e não funcionou.
O erro ocorre no foreach.
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.
GOSTEI 0
Alex William
14/01/2015
Ainda não funcionou, da erro:
Notice: Undefined index: cabecalho in efetua_importacao.php on line 53
começo do XML:
Código que uso para leitura:
Segui mais ou menos os mesmos passos do post que foi mostrado na resposta acima, e não funcionou.
O erro ocorre no foreach.
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'])
GOSTEI 0
William
14/01/2015
Alekym obrigado pelo retorno com a solução do problema, tenho certeza que será útil para outros usuários!
Estou encerrando o tópico.
Estou encerrando o tópico.
GOSTEI 0