não consigo usar os nós que tem ":" ... tipo nó GD namespace WHEN dalí teria que pegar o atributo STARTTIME e ENDTIME.
mas não consigo pegar nada de valores de nós com namespaces... a SimpleXML também não acessa arquivos remotos....
Tentativa 1 - com SimpleXML
<?php
$XmlFileToWork=('md_humberto.xml');
if (file_exists($XmlFileToWork)) {
$xml = simplexml_load_file($XmlFileToWork);
foreach ($xml->entry as $entry) {
echo $entry->title,'<br />'; // nome do compromisso
}
} else {
echo('Não foi possível encontrar o RSS desta agenda para ser exibido!');
}
?>
Tem como trabalhar com arquivos remotos? e com nós como GD:WHEN e pegar os valores dos atributos?
tentei também com a EXPAT - http://www.jclark.com/xml/expat.html
que também tá rodando aqui no meu php 5.1.2
a tentativa foi:
<?php
function startElement($xml_parser, $name, $attributes) {
global $l,$c,$dados;
$l++;
print("<p>[i]INI Elemento: [/i]$name\n");
if($name =='GD:WHEN'){
$c++;
$dados[$l][$c]=$attributes['STARTTIME'];
$c++;
$dados[$l][$c]=$attributes['ENDTIME'];
}
if ($name=='TITLE') {
//echo (' Atr Title: '.print($name).'<br>');
}
} // fim da function
function endElement($xml_parser, $name) {
print("<p>[i]Fim Elemento: [/i]$name\n");
} // fim da function
function characterData($xml_parser, $data) {
global $l;
if($data != "\n") {
//echo('L:'.$l);
print("<p>[i]DADO :[/i]$data\n");
}
}
function load_data($file) {
$fh = fopen($file, "r") or die ("<P>COULD NOT OPEN FILE!");
//não da para usar filesize em arquivos remotos... então..
$data = fread($fh, 9000000);
return $data;
} // fim da function
/***** MAIN *****/
$file = "http://www.google.com/calendar/feeds/8lumr5mpipqfrbvi844j1r63hg%40group.calendar.google.com/public/full";
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_parse($xml_parser, load_data($file)) or die ("<P>ERROR PARSING XML!");
xml_parser_free($xml_parser);
print_r($dados);
?>
Nesta segunda tentativa o que está dentro de TITLE quebra a linha sempre que aparece o primeiro caracter especial do dado.
Não estou conseguindo pegar as informações que preciso....
e finalmente a terceira tentativa... raríssimo exemplo da técnica GAMBIS e da POG....
<?php
$File=('http://www.google.com/calendar/feeds/8lumr5mpipqfrbvi844j1r63hg%40group.calendar.google.com/public/full');
$FileAberto=(fopen($File,'r'));
$TextoFile=(fread($FileAberto,1000000));
$ExplodidoPorEntrye=(explode('<entry>',$TextoFile));
$MaiorIndice=(count($ExplodidoPorEntrye)-1);
for($i=1;$i<=$MaiorIndice;$i++){
// para pegar o ttulo
$ExplodePorTitulo=(explode('<title type="text">',$ExplodidoPorEntrye[$i]));
$PosFimTitulo=strpos($ExplodePorTitulo[1],'</title>');
$ValorTitulo=(substr($ExplodePorTitulo[1],0,$PosFimTitulo));
//pega o horario inicial
$ExplodidoPorWen=(explode('<gd:when startTime="',$ExplodidoPorEntrye[$i]));
$ExplodidoPorAspasDuplas=explode('"',$ExplodidoPorWen[1]);
$DataHoraInicio=$ExplodidoPorAspasDuplas[0];
//pega o horrio final
$DataHoraFim=$ExplodidoPorAspasDuplas[2];
// pegando o link para esta marcao na agenda
// tem que fazer ainda....
// tratando os valore da data de inicio
$DataHoraInicio=(substr($DataHoraInicio,0,16));
//$DataHoraInicio=(mktime(substr($DataHoraInicio,11,-3),substr($DataHoraInicio,14),00,substr($DataHoraInicio,5,2),substr($DataHoraInicio,8,-6),substr($DataHoraInicio,0,4)));
// tratando os valores da data de fim
$DataHoraFim=(substr($DataHoraFim,0,16));
//$DataHoraFim=(mktime(substr($DataHoraFim,11,-3),substr($DataHoraFim,14),00,substr($DataHoraFim,5,2),substr($DataHoraFim,8,-6),substr($DataHoraFim,0,4)));
echo($DataHoraInicio.' as '.$DataHoraFim.' - '.$ValorTitulo.'<br>');
}
?>
Nesta tentativa eu abro o arquivo e vou quebrando ele até ter os valores que preciso....
Se o arquivo xml estiver local funciona 100%...
por exemplo se o xml fosse algo como 'agenda.xml' funcionaria sem problemas e traria tudo o que preciso...
Mas com arquivos remotos...ele não lê todo o arquivo.....
pior...
carrega sempre uma quantidade diferente de texto (xml)...e aí não funciona nada...
Como conseguir ler TODO o arquivo remoto e colocar este texto em uma variável, para só então usá-la?
Bom, tendo como resolver o problema... de qualquer uma das formas tá ok... procurei também por classes prontas para trazer resultados do google calendar ... mas não achei... se alguém souber de um...
Pergunta
heltonritter
Bom dia amigos.
estou com problemas ...
Sendo objetivo... tenho o RSS gerado pelo Google Calendar:
http://www.google.com/calendar/feeds/8lumr...com/public/full
tenho que ler este xml e mostrar o compromissos marcados (os valores dentro de ENTRY)
o title...
<title type="text">Viagem Blumenau</title>
e também quando inicia e quando acaba este compromisso... estas informações estão em:
<gd:when startTime="2007-02-06T21:30:00.000-02:00" endTime="2007-02-07T07:30:00.000-02:00">
tentei de várias maneiras... com a simplexml
não consigo usar os nós que tem ":" ... tipo nó GD namespace WHEN dalí teria que pegar o atributo STARTTIME e ENDTIME.
mas não consigo pegar nada de valores de nós com namespaces... a SimpleXML também não acessa arquivos remotos....
Tentativa 1 - com SimpleXML
Tem como trabalhar com arquivos remotos? e com nós como GD:WHEN e pegar os valores dos atributos? tentei também com a EXPAT - http://www.jclark.com/xml/expat.html que também tá rodando aqui no meu php 5.1.2 a tentativa foi: Nesta segunda tentativa o que está dentro de TITLE quebra a linha sempre que aparece o primeiro caracter especial do dado. Não estou conseguindo pegar as informações que preciso.... e finalmente a terceira tentativa... raríssimo exemplo da técnica GAMBIS e da POG....Nesta tentativa eu abro o arquivo e vou quebrando ele até ter os valores que preciso....
Se o arquivo xml estiver local funciona 100%...
por exemplo se o xml fosse algo como 'agenda.xml' funcionaria sem problemas e traria tudo o que preciso...
Mas com arquivos remotos...ele não lê todo o arquivo.....
pior...
carrega sempre uma quantidade diferente de texto (xml)...e aí não funciona nada...
Como conseguir ler TODO o arquivo remoto e colocar este texto em uma variável, para só então usá-la?
Bom, tendo como resolver o problema... de qualquer uma das formas tá ok... procurei também por classes prontas para trazer resultados do google calendar ... mas não achei... se alguém souber de um...
Agradeço toda e qulquer ajuda.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.