Formatando documentos XML com Expat + PHP
Para se formatar um documento XML utilizando o método Expat existem basicamente 6 passos:
- definir uma função que será chamada quando uma tag inicial for encontrada (no meu exemplo seria a função "inicioElemento")
- definir uma função que sera chamada quando uma tag final for encontrada (no meu exemplo seria a função "fimElemento")
- definir uma função que será executada quando dados de caractere forem encontrados (no meu exemplo seria a função "dadosElemento")
- registrar as funções de início e fim de tag com a função "xml_set_element_handler"
- registrar a função de tratamento de caractere com a função "xml_set_character_data_handler"
- criar o parser utilizando a função "xml_parser_create"
Depois que os passos anteriores tenham sido realizados basta passar o documento XML ao nosso parser através da função "xml_parse".
noticias.php
";
print trim($noticiaAtual['TITULO']) . " | ";
print "
" . trim($noticiaAtual['DATA']);
print " | " .trim($noticiaAtual['AUTOR']) . " |
";
print "
";
print nl2br(trim($noticiaAtual['TEXTO'])) . " |
";
$noticiaAtual = null;
}
}
function dadosElemento($parser,$dados){
global $noticiaAtual,$tagAtual;
$noticiaAtual[$tagAtual] .= $dados;
}
$meuParser = xml_parser_create();
xml_set_element_handler($meuParser,"inicioElemento","fimElemento");
xml_set_character_data_handler($meuParser,"dadosElemento");
$meuArquivoXML = fopen("noticias.xml","r");
print "
";
while(!feof($meuArquivoXML)){
$meuDado = fread($meuArquivoXML,1024);
if (!xml_parse($meuParser,$meuDado)){
$textoErro = xml_error_string(xml_error_code($meuParser));
$linhaErro = xml_get_current_line_number($meuParser);
DIE($linhaErro . " : " . $textoErro);
}
}
print "
";
fclose($meuArquivoXML);
?>
noticias.xml
Como pequeno, Cruzeiro cai no Mineirao
Equipe de Reportagem do jornal Estado de Minas
04/04/2002
O Cruzeiro jogou como um time pequeno em pleno Mineirao e pagou
pela covardia. Diante de 33.251 pagantes o lider da Sul-Minas
perdeu por 3 a 2 para o Corinthinas e foi eliminado nas oitavas
de final da Copa do Brasil. Iludido pela vantagem de poder empatar
por 0 a 0 e 1 a 1 , o time da Toca da Raposa deixou-se dominar
,foi apatico e chegou a estar perdendo por 3 a 0 merecidamente.
Cruzeiro alcanca objetivos
Equipe de Reportagem do jornal Estado de Minas
08/04/2002
Ja classificado em primeiro lugar para as semifinais
da Copa Sul-Minas,o Cruzeiro derrotou o Mamore ontem por 2 a 1, no Estadio Zama Maciel, em Patos de Minas, com dois objetivos claros: tentar um rendimento superior, como no inicio da temporada, com a volta do armador Vander ausente da equipe ha mais
de um mes, e dar chances para Cris mostrar seu futebol e ficar proximo novamente de uma convocacao para a Selecao Brasileira.
Por hoje é só.
Até mais pessoal.