Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
É o seguinte, para cada xml que eu tiver na pasta A1 quero obter de cada um o: nome, id, ultima_att, endereco_mest, lat, lng
e depois gerar um xml com a estrutura:
<?xml version="1.0" encoding="ISO-8859-1"?>
<markers>
<marker>
<name>primeiro individuo</name>
<address>Universidade+Estadual+de+Campinas,+UNICAMP,+Brasil.</address>
<lat>-22.8171043</lat>
<lng>-47.0697310</lng>
</marker>
<marker>
<name>segundo individuo</name>
<address>Universidade+Estadual+de+Campinas,+UNICAMP,+Brasil.</address>
<lat>-22.8171043</lat>
<lng>-47.0697310</lng>
</marker>
.
.
.
.
</markers>
Desenvolvi o seguinte código, porém sou iniciante com php e meu xml final esta me retornando a quantidade certa e a estrutura correta porem esta retornando o primeiro individuo copiado varias vezes...
$i=0;
foreach(glob('XML/A1/*.xml') as $xmlFile){
$i = $i + 1;
}
$nome = array();
$id = array();
$ultima_att = array();
$endereco_mest = array();
$lat = array();
$lng = array();
for ($f=0; $f <=$i -1; $f++) {
$xml = simplexml_load_file($xmlFile);
$id[$f] = strval($xml->id);
$nome[$f] = strval($xml->nome);
$ultima_att[$f] = strval($xml->ultima_atualizacao);
$mestrado = strval($xml->mestrado);
$univ_mest = explode(";",$mestrado);
//encontra os espaços e divide
$univ_mest_att = explode(" ",$univ_mest[3]);
//adiciona o + aos espaços e une em uma string só
$endereco_mest[$f]= implode("+", $univ_mest_att);
//$endereco_mest= $univ_mest_att[0].'+'.$univ_mest_att[1].'+'.$univ_mest_att[2].'+'.$univ_mest_att[3].'+'.$univ_mest_att[4].'+'.$univ_mest_att[5].'+'.$univ_mest_att[6].'+'.$univ_mest_att[7];
//echo $endereco_mest.'<br/>';
$address = "http://maps.googleapis.com/maps/api/geocode/xml?address=".$endereco_mest[$f]."&sensor=false";
$page = file_get_contents($address);
// Parse the returned XML file
$xml_geo = new SimpleXMLElement($page);
// Retrieve the desired XML node
$lat[$f]=$xml_geo->result->geometry->location->lat;
$lng[$f]=$xml_geo->result->geometry->location->lng;
///////////////////////////////////////////////////////////////////////////////////////GERANDO O FINAL
}
$xml_final = new XMLWriter;
$xml_final->openMemory();
$xml_final->startDocument( '1.0' , 'iso-8859-1' );
$xml_final->startElement("markers");
for ($f=0; $f <=$i-1; $f++) {
$xml_final->startElement("marker");
$xml_final->writeElement("name", "$nome[$f]");
$xml_final->writeElement("address", "$endereco_mest[$f]");
$xml_final->writeElement("lat", "$lat[$f]");
$xml_final->writeElement("lng", "$lng[$f]");
$xml_final->endElement();
}
$xml_final->endElement();
//header( 'Content-type: text/xml' );
//print $xml->outputMemory(true);
$file = fopen('markers.xml','w+');
fwrite($file, $xml_final->outputMemory(true));
fclose($file);
Obrigado pela atenção!Carregando comentários...