Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguem poderia me ajudar, estou precisando ler um xml online e fazer uma copia da mesma estrutura localmente. Eu consigo ler determinados tags dentro do xml, mas to querendo ler ele todo pois preciso fazer uma copia de cada xml do meu servidor
alguém poderia me dar uma luz, estou tentando desta forma, mas não imprime o mesmo formato, apenas o conteudo de cada tag
>
<?
$ponteiro = fopen ("url","r");
while (!feof ($ponteiro)) {
$linha = fgets($ponteiro, 4096);
echo $linha."<br>";
}
fclose ($ponteiro);
?>file_get_contents ou curl para ler ele remotamento e file_put_contents para gravar ele no servidor, pronto.
troquei o fgets por file_get_contents mas ele fica no loding eterno
function curl_get_file_contents($URL){
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
// Seguir qualquer redirecionamento que houver na URL
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
$xml = simplexml_load_file("url_do_sitemap_index.xml");
$i=1;
foreach($xml->url as $url)
{
$conteudo = curl_get_file_contents( $url->loc );
file_put_contents( sprintf('%s.xml', $i++ ), $conteudo );
}
Segue o exemplo acimadesculpa mas meu conhecimento é basico
utilizei seu codigo acima mas nao me retorna nada
coloquei um echo $conteudo mas mesmo assim nao imprimiu em tela
era só um exemplo!
mas dê um um print_r na var $xml e coloque o endereço em simplexml_load_file("url_do_sitemap_index.xml");
e poste aqui o que retorna
echo '<pre>';
print_r( $xml );
echo '<pre>';retornou os conteudos do xml, só que nao no formato de xml.
Teria como retornar da mesma forma de um xml, exemplo:
<?xml version="1.0" encoding="UTF-8"?><curriculo> <InformacaoPessoal> <DataNascimento>23-07-68</DataNascimento> <Nomecompleto>...</Nomecompleto> ......
O seu codigo retornou desta forma
>
SimpleXMLElement Object( [@attributes] => Array ( [version] => 1.0 ) [Data] => SimpleXMLElement Object ( [id] => 1 [Nome] => Teste[.......]
Era pra entender como estava seu .xml, se era um sitemapindex ou sitemap
Testa asssim agora
function curl_get_file_contents($URL){
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
// Seguir qualquer redirecionamento que houver na URL
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
$conteudo = curl_get_file_contents( 'url_do_sitemap_index.xml' );
file_put_contents( 'vai_salvar_como.xml', $conteudo );>
<?php
function curl_get_file_contents($URL){
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
// Seguir qualquer redirecionamento que houver na URL
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
$xml = curl_get_file_contents('url');
$i=1;
foreach($xml->url as $url)
{
$conteudo = curl_get_file_contents( $url->loc );
file_put_contents( 'vai_salvar_como.xml', $conteudo );
}
echo '<pre>';
print_r( $xml );
echo '<pre>';
?>
fiz assim, até que ele retornou todo o conteudo do xml, formatado com tab.
Mas as tags, ele não trouxe. tipo
<version="1.0">
<Data>
<Id>1</Gamertag>
<Nome>Nome</Id>
</Data>Para salvar uma cópia do xml
é somente isso igual ao post #8
function curl_get_file_contents($URL){
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
// Seguir qualquer redirecionamento que houver na URL
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
}
$caminho_do_sitemap = 'http://www.site.com.br/sitemap.xml'
$conteudo = curl_get_file_contents( $caminho_do_sitemap );
file_put_contents( 'vai_salvar_como.xml', $conteudo );
Não precisa usar foreach neste caso!
entendi, obrigado.
acho que agora consigo modificar o codigo oconforme precisso.
file_get_contents ou curl para ler ele remotamento e file_put_contents para gravar ele no servidor, pronto.