Guia de Consulta Rápida. PHP com XML. Juliano Niederauer. Terceira Edição. Novatec

Documentos relacionados
Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP

2 echo "PHP e outros.";

Introdução ao PHP. Prof. Késsia Marchi

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Desenvolvendo Websites com PHP

02 - Usando o SiteMaster - Informações importantes

Web Design. Prof. Felippe

Programação Web Prof. Wladimir

Linguagem de Programação. Introdução ao PHP. Prof Mauricio Lederer Ciência da Computação - UNIANDRADE 1

Copyright 2008, 2013 da Novatec Editora Ltda.

Características do PHP. Começando a programar

Criando um script simples

PHP AULA1. Prof. Msc. Hélio Esperidião

Internet e Programação Web

Programando em PHP. Conceitos Básicos

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

Programação WEB. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

HTML 5 + CSS APRESENTANDO O CSS ESTILOS LOCAIS

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Manual do Visualizador NF e KEY BEST

Conceitos de extensões Joomla!

Guia de Consulta Rápida ASP. Rubens Prates. Novatec Editora.

JDBC Java Database Connectivity

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Auxiliar de instalação (Português Brasileiro) Primeiros passos

Manual do Painel Administrativo

Table of Contents. PowerPoint XP

Integrantes: Catarino Rodrigues Data: 26/10/2012. Leandro de Matos Pereira. Leandro dos Santos Marciano. Ramon Alves de Souza

CURSO DE PROGRAMAÇÃO EM JAVA

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu 2014/2

Introdução ao Tableau Server 7.0

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

Desenvolvimento de Sites com PHP e Mysql Docente André Luiz Silva de Moraes

Sumário. Capítulo 1 Revisão de PHP Capítulo 2 Melhorando o processamento de formulários... 46

Microsoft Office PowerPoint 2007

2. O AMBIENTE DE PROGRAMAÇÃO EM C

VVS Sistemas (21)

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Wilson Moraes Góes. Novatec

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

WF Processos. Manual de Instruções

WEBDESIGN. Professor: Paulo Trentin Escola CDI de Videira

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Lógica de Programação

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Desenvolvedor Web Docente André Luiz Silva de Moraes

Laboratório de Redes. Professora Marcela Santos

Orientação a Objetos

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Documentação Usando o Javadoc

Instalando o WordPress em localhost

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

18/04/2006 Micropagamento F2b Web Services Web rev 00

Algoritmos em Javascript

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Introdução. História. Como funciona

Lição 1 - Criação de campos calculados em consultas

Instalação e utilização do Document Distributor

Criando, inserindo e exibindo PHP+MySql

MANUAL TISS Versão

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

Manual SAGe Versão 1.2 (a partir da versão )

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML

Bem-vindo ao Guia de Introdução - Utilitários

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Introdução a Java. Hélder Nunes

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

43 11 Relatórios, Listagens e Exportações para Excel, TXT e HTML

GUIA RÁPIDO DE UTILIZAÇÃO DO PORTAL DO AFRAFEP SAÚDE

Microsoft Access XP Módulo Um

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

"Manual de Acesso ao Moodle - Discente" 2014

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

Guia de Início Rápido

Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL. Prof. MSc.

AULA 12 RELATÓRIOS PDF O QUE É UM FORMATO PDF

Disciplina: Unidade V: Prof.: Período:

NetEye Guia de Instalação

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

LINGUAGEM DE PROGRAMAÇÃO WEB

NetEye Guia de Instalação

DESENVOLVIMENTODE APLICAÇÕESPARAINTERNET:PHP. VitorFariasCoreia

Criando Relatórios com PHP

Consultório On-line. Tudo o que você precisa em um só lugar.

Instalação rápida do Expresso

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Transcrição:

Guia de Consulta Rápida PHP com XML Juliano Niederauer Terceira Edição Novatec

Copyright 2002 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates ISBN: 978-85-7522-119-8 Primeira impressão: Outubro/2002 Segunda edição: Outubro/2004 Terceira edição: Julho/2007 Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo SP Brasil Tel.: +55 11 6959-6529 Fax: +55 11 6950-8869 E-mail: novatec@novatec.com.br Site: www.novatec.com.br

Sumário Conceitos básicos.5 O que é PHP?..5 O que é XML?6 Usando PHP com XML..6 Instalando a extensão expat..8 Analisando um documento XML com PHP9 Criando um parser XML9 Definindo as funções de manipulação..9 Mapeamento de tags XML.. 12 Executando o parser e manipulando erros 15 Usando um array para analisar os dados.. 17 Buscando dados em um documento XML20 Liberando a memória utilizada. 24 Exemplos completos.25 Funções DOM XML..31 O que é um parser DOM?31 Diferenças entre parsers SAX e DOM. 32 Carregando e manipulando os dados em memória.. 32 Exemplo de parser DOM.34 Transformando documentos XML com PHP e XSLT 37 O que é XSLT?. 37 Como é feita a transformação 37 Exemplo de folha de estilo XSLT.. 39 Criando um processador XSLT no PHP.40 Executando uma transformação40 Liberando a memória utilizada. 41 Exemplo completo de transformação XSLT. 41 Usando PHP para gerar arquivos XML..45 Por que criar arquivos XML?.45 Gerando a partir do MySQL..45 Gerando a partir do PostgreSQL.. 47 Funções PHP para um parser XML.49 Lista das funções PHP / DOM XML.. 62 Outra alternativa: SimpleXML..65 Obtendo o conteúdo XML..65 Acessando os campos dos registros.66 Percorrendo os registros com foreach.. 67 Acessando os atributos das tags XML68 Funções da SimpleXML68 Funções PHP/XSLT para transformação69 Lista dos elementos da XSLT.72 Informações adicionais.77 Download dos exemplos do guia.77 Links relacionados.77 Comentários e sugestões.77 Índice remissivo..78

Conceitos básicos Conceitos básicos O que é PHP? PHP é uma das linguagens de programação mais utilizadas na web para a criação de páginas dinâmicas. Suas principais características são: Gratuito e com código aberto: o arquivo de instalação pode ser adquirido gratuitamente no site http://www.php.net. Além disso, o PHP é um software com código-fonte aberto. O código-fonte, assim como a sua documentação detalhada, também estão disponíveis no site oficial do PHP. Embutido no HTML: o HTML e o PHP estão misturados. Você pode começar a escrever em PHP, de repente escrever um trecho em HTML, depois voltar para o PHP, e assim por diante. Baseado no servidor: quando você acessa uma página PHP através do seu navegador, todo o código PHP é executado no servidor, e somente o resultado final é exibido para o usuário. Portanto, o navegador exibe a página já processada, sem consumir recursos de seu computador. Além disso, ao contrário da linguagem Javascript, as linhas de programação PHP não podem ser vistas por ninguém, pois elas são executadas no próprio servidor e o que retorna é apenas o resultado do código executado. Bancos de dados: diversos bancos de dados são suportados pelo PHP, ou seja, o PHP possui código que executa funções de cada um. Entre eles temos PostgreSQL, Sybase, MySQL, Oracle, SQL Server e muitos outros. Portabilidade: pode-se executar o PHP no Linux, Unix ou Windows NT. A seguir é apresentado um exemplo de uma página Web que contém programação PHP: <html> <head> <title>exemplo</title> </head> <body> <?php echo "Este é um script PHP!"; </body> </html> Perceba que um trecho de programa PHP deve iniciar com <?php e terminar com. O programa apresentado contém a estrutura padrão de uma página HTML, com os elementos html, body, head e title. No corpo da página há um trecho de código PHP, onde foi utilizado o comando echo para exibir na tela o texto "Este é um script PHP!". Para aprender mais sobre PHP você pode

Conceitos básicos consultar alguns livros dedicados a essa linguagem, como o "Desenvolvendo Websites com PHP", da Novatec Editora. O que é XML? A XML (Extensible Markup Language) permite que você crie os seus próprios conjuntos de elementos de marcação. A XML busca executar o que seria a verdadeira função de uma linguagem de marcação: descrever o conteúdo de um documento, e não como ele deve ser exibido. Com as marcações personalizadas da XML torna-se possível a estruturação dos dados, que posteriormente poderão ser recuperados facilmente e utilizados de diversas maneiras. A seguir é apresentado um exemplo de documento XML, que iremos nomear como futebol.xml: <?xml version="1.0" <futebol> <jogador> <nome>mauro Galvão</nome> <idade>40</idade> <altura>1.80</altura> <time>grêmio</time> <posicao>zagueiro</posicao> </jogador> <jogador> <nome>kléber</nome> <idade>25</idade> <altura>1.78</altura> <time>atlético-pr</time> <posicao>meio-campo</posicao> </jogador> <jogador> <nome>adãozinho</nome> <idade>34</idade> <altura>1.68</altura> <time>são Caetano</time> <posicao>meio-campo</posicao> </jogador> </futebol> O documento apresentando armazena, de forma estruturada, dados referentes a alguns jogadores de futebol. Você pode obter mais informações sobre XML no site do W3C, no endereço http://www.w3.org/xml, ou no guia de XML publicado pela Novatec Editora (http://novateceditora.com.br/guias/xml/). Usando PHP com XML O principal objetivo deste Guia é ensinar como trabalhar de forma conjunta com PHP e XML, ou seja, ensinar a utilizar a linguagem PHP para extrair e exibir com determinada formatação os dados contidos em documentos XML. Em outras palavras, você irá aprender a criar um analisador (parser) XML para tratar de alguma forma os dados existentes nesses documentos.

Conceitos básicos No decorrer do Guia discutiremos cada etapa do processo de análise de um documento XML com PHP. Para já ir se acostumando, observe o trecho de código PHP a seguir, que simplesmente exibe na tela (em formato HTML) os dados contidos no documento futebol.xml, apresentado no item anterior: <html> <head> <title>jogadores de futebol</title> </head> <body> <h2>jogadores</h2> <? function TagInicial($parser, $elemento, $attrs) { if($elemento!="futebol") if($elemento=="jogador") echo "<ul>"; else echo "<li>"; function TagFinal($parser, $elemento) { if($elemento!="futebol") if($elemento=="jogador") echo "</ul>"; else echo «</li>»; function TrataCaracteres($parser, $dados) { echo $dados; $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "TagInicial", "TagFinal"); xml_set_character_data_handler($xml_parser, "TrataCaracteres"); if (!($fp = fopen("futebol.xml", "r"))) die("não foi possível abrir o arquivo XML."); while ($dados = fread($fp, 4096)) { if (!xml_parse($xml_parser, $dados, feof($fp))) { die(sprintf("erro XML: %s na linha %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); xml_parser_free($xml_parser); </body> </html> O script PHP apresentado, que foi nomeado como futebol. php, exibe em forma de itens (elemento li da HTML) os dados referentes a cada jogador armazenado no documento futebol.xml. O resultado produzido pela execução desse script é apresentado na figura a seguir. No tópico "Analisando um documento XML com PHP" na página 9, você aprenderá detalhadamente cada etapa do processo

Conceitos básicos de análise, juntamente com algumas técnicas de programação que facilitam a formatação dos dados recuperados. Instalando a extensão expat A extensão que possibilita a análise de documentos XML a partir do PHP é chamada de expat, e foi criada por James Clark. A expat permite a criação de parsers XML e a definição de funções de manipulação para diversos tipos de eventos XML. Essas funções, chamadas de handlers, são definidas por funções como xml_set_element_handler, xml_set_character_data_handler, xml_set_processing_instruction_handler, entre outras. Provavelmente você não terá que instalar essa extensão, pois se o PHP estiver sendo executado no servidor Web Apache 1.3.7 ou posterior, a expat já estará disponível. Nesse caso basta configurar o PHP com with-xml para que a extensão seja integrada ao Apache. Caso o PHP tenha sido compilado como um módulo do Apache 1.3.9 ou posterior, a extensão expat embutida no Apache será automaticamente utilizada. No entanto, se você estiver utilizando uma versão do Apache anterior à 1.3.7, ou outro servidor web que não ofereça o suporte necessário, haverá a necessidade de fazer o download e instalar a expat, que pode ser obtida em http://www.jclark.com/xml/. A documentação do PHP adverte que o arquivo Makefile que acompanha a extensão expat não cria uma biblioteca, e recomenda a seguinte regra para executar essa tarefa: libexpat.a: $(OBJS) ar -rc $@ $(OBJS) ranlib $@ Se preferir, pode fazer o download da expat em um pacote RPM ou em arquivo executável (para Windows) acessando o endereço http://sourceforge.net/projects/expat/.

Analisando um documento XML com PHP Analisando um documento XML com PHP Agora você aprenderá com detalhes cada etapa do processo de análise de um documento XML, desde a criação de um analisador (parser) XML até a liberação da memória ocupada por ele. Nos trechos de códigos apresentados a seguir, considere os três pontos () como um trecho de código PHP que no momento não vem ao caso. O exemplo completo estará nomeado como futebol2.php, disponível para download no endereço indicado no final deste guia. Criando um parser XML Em um script PHP, para iniciar a análise de um documento XML, é necessário que seja criado um parser. Essa tarefa é executada pela função xml_parser_create(), cujo resultado deve ser atribuído a uma variável que será utilizada toda vez que houver a necessidade de referenciar esse parser. Portanto, precisamos de uma única linha de código PHP: <?php $xml_parser = xml_parser_create(); A variável $xml_parser receberá um valor inteiro que representa o identificador do parser XML no script PHP que está em execução. As diversas funções relacionadas com a análise XML irão utilizar esse valor como referência. Definindo as funções de manipulação Após a criação do parser devem ser definidas as funções (handlers) que irão manipular os principais eventos gerados durante a análise do documento XML. Os principais handlers são definidos pelas funções: xml_set_element_handler xml_set_character_data_handler Porém, para a definição de handlers também existem as seguintes funções: xml_set_processing_instruction_handler xml_set_default_handler xml_set_unparsed_entity_decl_handler xml_set_notation_decl_handler xml_set_external_entity_ref_handler Todas elas serão vistas com detalhes no tópico "Funções PHP para um parser XML" na página 49. Neste tópico serão apresentadas as duas principais, como mostra o seguinte trecho de código:

10 Analisando um documento XML com PHP <? // cria o parser $xml_parser = xml_parser_create(); // define funções de manipulação xml_set_element_handler($xml_parser, "TagInicial", "TagFinal"); xml_set_character_data_handler($xml_parser, "TrataCaracteres"); É importante dizer que as funções de manipulação devem estar definidas antes que sejam executadas as funções xml_ set_element_handler e xml_set_character_data_handler. Portanto, no exemplo apresentado, primeiro devem ser criadas as funções TagInicial, TagFinal e TrataCaracteres, para posteriormente serem definidas como funções de manipulação. A função TagInicial será responsável por executar uma determinada ação quando o parser XML encontrar a tag inicial de algum elemento. Considerando o documento futebol.xml apresentado no início deste guia, a função TagInicial seria ativada quando o parser encontrasse as seguintes tags: <futebol> <jogador> <nome> <idade> <altura> <time> <posicao> A função TagFinal executará uma determinada ação quando o parser XML encontrar as tags de fechamento para os elementos que compõe o documento. No nosso exemplo, as tags de fechamento serão as seguintes: </futebol> </jogador> </nome> </idade> </altura> </time> </posicao> A função TrataCaracteres será responsável por tratar de alguma forma os caracteres encontrados entre as tags de abertura e fechamento. A função TagInicial deve possuir três parâmetros: Identificador do parser XML que ativou esta função. Nome do elemento para o qual esta função foi chamada. Um array associativo contendo os atributos (caso existam) do elemento. Os nomes dos atributos são utilizados como chaves para acessar os seus valores. Por exemplo:

Analisando um documento XML com PHP 11 <?php function TagInicial($parser, $elemento, $attrs) { if($elemento=="futebol") echo "<table bgcolor=#00ff00>"; else if($elemento=="jogador") echo "<tr><td><ul>"; else echo "<li>"; Dessa forma, quando o parser XML encontrar a tag <futebol>, a função TagInicial criará uma tabela HTML com o plano de fundo verde. Ao encontrar a tag <jogador> será criada uma célula da tabela HTML, e dentro dela uma lista não-ordenada (elemento ul). Para as demais tags iniciais será impresso um marcador de item da lista (elemento li). Antes de apresentar a função responsável pelo fechamento de todas essas tags veremos a função TrataCaracteres, que trata de alguma forma os dados contidos entre as tags inicial e final de um elemento. A função TrataCaracteres deve possuir dois parâmetros: Identificador do parser XML que ativou esta função. Os dados a serem tratados. Por exemplo: <?php function TrataCaracteres($parser, $dados) { echo "<b>"; echo $dados; echo "</b>"; A função mostrada neste exemplo apenas exibe em negrito os dados recebidos. No entanto, poderia ser utilizada uma formatação diferente para cada dado, dependendo do elemento que está sendo analisado. Para isso, bastaria utilizar uma variável global para armazenar o elemento corrente, como veremos em um exemplo mais adiante. Após abrir algumas tags e tratar os dados recebidos, utilizamos a função TagFinal para executar alguma ação quando uma tag de fechamento for encontrada. Essa função deve possuir dois parâmetros: Identificador do parser XML que ativou esta função. Nome do elemento para o qual esta função foi chamada. Por exemplo: <?php function TagFinal($parser, $elemento) { if($elemento=="futebol") echo "</table>";

12 Analisando um documento XML com PHP else if($elemento=="jogador") echo "</ul></td></tr>"; else echo "</li>"; Veja que, no exemplo que utilizamos, a função TagFinal é encarregada de gerar as tags de fechamento para as tags que foram abertas pela função TagInicial, enquanto a função TrataCaracteres é utilizada para imprimir, de modo formatado, os dados encontrados. Portanto, ao criar as funções que foram nomeadas como TagInicial, TagFinal e TrataCaracteres, e defini-las como funções de manipulação (handlers), estaremos tratando os principais eventos XML. Dessa forma pode-se utilizar a HTML para exibir no navegador, com uma determinada formatação, aqueles dados que estavam armazenados de forma estruturada no documento XML. Mapeamento de tags XML Para facilitar a conversão de dados estruturados (em XML) para dados formatados (em HTML), pode ser feito um mapeamento de tags. Esse mapeamento consiste em definir os códigos HTML que devem ser exibidos para cada tag encontrada no documento XML. Para deixar o código mais fácil de entender, em vez de usar vários comandos if encadeados, isso pode ser feito de duas formas: Com o comando switch do PHP. Criando um array associativo, onde as chaves correspondem ao nome dos elementos e os valores são os códigos HTML correspondentes a cada tag. Agora veremos como implementar cada uma das formas. A primeira será gravada em um arquivo chamado futebol3.php e a segunda no arquivo futebol4.php, também disponíveis para download no endereço indicado no final desse guia. Utilizando o comando switch para fazer o mapeamento, as funções de manipulação poderiam ser as seguintes: <? function TagInicial($parser, $elemento, $attrs) { switch ($elemento) { case "FUTEBOL": echo "<table bgcolor=#f0f0f0>"; case "JOGADOR": echo "<tr><td>"; case "NOME": echo "<b>";

Analisando um documento XML com PHP 13 case "IDADE": echo "Idade: <i>"; case "ALTURA": echo "Altura: <i>"; case "TIME": echo "Time: <u>"; case "POSICAO": echo "Posição: <i>"; default: function TagFinal($parser, $elemento) { switch ($elemento) { case "FUTEBOL": echo "</table>"; case "JOGADOR": echo "</td></tr>"; case "NOME": echo "</b><br>"; case "IDADE": echo "</i><br>"; case "ALTURA": echo "</i><br>"; case "TIME": echo "</u><br>"; case "POSICAO": echo "</i><br><br>"; default: function TrataCaracteres($parser, $dados) { echo $dados; Na segunda maneira de implementar o mapeamento de tags utiliza-se dois arrays associativos globais, sendo um para mapear as tags de abertura e outro as tags de fechamento. Dessa forma, as funções de manipulação podem acessar diretamente a posição do array correspondente ao elemento que está sendo analisado. Então o script PHP poderia ser definido da seguinte forma:

14 Analisando um documento XML com PHP <? $inicial = array ('FUTEBOL' => '<table bgcolor=#f0f0f0>', 'JOGADOR' => '<tr><td>', 'NOME' => '<b>', 'IDADE' => 'Idade: <i>', 'ALTURA' => 'Altura: <i>', 'TIME' => 'Time: <u>', 'POSICAO' => 'Posição: <i>'); $final = array ('FUTEBOL' => '</table>', 'JOGADOR' => '</td></tr>', 'NOME' => '</b><br>', 'IDADE' => '</i><br>', 'ALTURA' => '</i><br>', 'TIME' => '</u><br>', 'POSICAO' => '</i><br><br>'); function TagInicial($parser, $elemento, $attrs) { global $inicial; echo $inicial[$elemento]; function TagFinal($parser, $elemento) { global $final; echo $final[$elemento]; function TrataCaracteres($parser, $dados) { echo $dados; As duas formas produzem o mesmo resultado no programa navegador, como mostra a figura seguinte: Ao escolher a opção "Exibir Código-fonte" no browser, verá que os códigos HTML gerados pelas páginas futebol3.php e futebol4.php são idênticos. Veja a seguir o código gerado: <table bgcolor=#f0f0f0> <tr><td> <b>mauro Galvão</b><br>

Analisando um documento XML com PHP 15 Idade: <i>40</i><br> Altura: <i>1.80</i><br> Time: <u>grêmio</u><br> Posição: <i>zagueiro</i><br><br> </td></tr> <tr><td> <b>kléber</b><br> Idade: <i>25</i><br> Altura: <i>1.78</i><br> Time: <u>atlético-pr</u><br> Posição: <i>meio-campo</i><br><br> </td></tr> <tr><td> <b>adãozinho</b><br> Idade: <i>34</i><br> Altura: <i>1.68</i><br> Time: <u>são Caetano</u><br> Posição: <i>meio-campo</i><br><br> </td></tr> </table> Portanto, fizemos um mapeamento das tags do documento futebol.xml, atribuindo uma determinada formatação HTML para cada tag encontrada. Para o elemento FUTEBOL foi criada uma tabela com plano de fundo cinza; para o elemento JOGADOR foi criada uma célula na tabela; para o elemento NOME o texto foi formatado com negrito, e assim por diante. Executando o parser e manipulando erros Já vimos como criar um parser XML com a função xml_parser_create, e como definir as funções de manipulação (handlers) com as funções xml_set_element_handler e xml_set_character_data_handler. Mas para realmente iniciar a análise de um documento XML precisamos executar a função xml_parse. Sua sintaxe é a seguinte: int xml_parse (int parser, string dados [, int final]) O primeiro parâmetro é o identificador do parser XML, ou seja, a variável que recebeu o resultado da função xml_parser_create. O segundo parâmetro são os dados a serem analisados. O terceiro parâmetro é opcional, servindo para indicar se a análise do documento XML já chegou ao fim. Observe a seguir um exemplo de uso dessa função: <?php if (!($fp = fopen("futebol.xml", "r"))) die("não foi possível abrir o arquivo XML."); while ($dados = fread($fp, 4096)) xml_parse($xml_parser, $dados, feof($fp)); No trecho de código apresentado, primeiramente é feita a tentativa de abrir o arquivo futebol.xml para leitura. Caso o arquivo seja aberto com sucesso, será executado um comando