Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Carazato

Array, manipulando XML

Recommended Posts

É 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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.