Olá pessoal tudo bem?
Tenho um arquivo XML, que preciso importar e salvar os dados no banco MySql, porém estou com dificuldades de puxar os dados, gostaria de saber se alguém pode me ajudar?
segue a minha estrutura XML.: arquivo.xml
utilizei o xpath que ajuda a buscar dados definindo o que eu quero.
<?php
$xml = simplexml_load_file("arquivo.xml");
$selecionar = $xml->xpath('/LISTA/DADOS/INF/@ID');
foreach ($selecionar as $dados)
echo $dados;
?>
o resultado é :
nome
end
email
o que eu quero é os Valores e armazenar nas variáveis, alguém ja fez leitura de xml deste tipo, obrigado
Seu xml não apareceu corretamente, tente usar os 4 espaços (tag code) para mostrar o código…
A busca que você fez no xpath foi justamente para trazer o id de cada elemento inf, nesse caso, melhor trocar por
$selecionar = $xml->xpath('/LISTA/DADOS/INF/@VALUE');
Porém dessa forma você não consegue trazer o nó (elemento inf) por completo, apenas o valor de cada um num array…
Mais sobre xpath…
https://www.w3schools.com/xml/xml_xpath.asp
entendi LostSoldier, neste caso eu tenho que apontar para um array e passar como parametros os valores para armazenar o que eu quero.
a minha idéia era pegar uma por uma para que eu possa armazenar numa variável e gravar o que eu quero.
por exemplo da busca só armazenar o nome e o e-mail, mas tranquilo colega obrigado pela dica ajudou muito.
Na verdade não é bem apontar para um array, porque esse é o comportamento padrão do método xpath, ele traz um array pra você e em cada posição o resultado da pesquisa… tanto que você consegue colocá-lo num foreach…
Segue outra forma de manipular a api SimpleXML
https://www.w3schools.com/php/php_xml_simplexml_get.asp
As vezes o nome das variáveis deixa o código mais intuitivo, por exemplo:
<?php
$xml = simplexml_load_file("arquivo.xml");
$valores = $xml->xpath('/LISTA/DADOS/INF/@VALUE');
foreach ($valores as $valor)
echo $valor;
?>
Com isso você já obteve uma lista de valores encontrados e para cada iteração do foreach um valor é automaticamente colocado na variável $valor…
Se quiser fazer uma pesquisa de ID’s por exemplo…
$ids = $xml->xpath('/LISTA/DADOS/INF/@ID');
E assim por diante…