Tutorial PHP XML: Criar, analisar, ler com exemplo
O que é XML?
XML é a sigla para Extensible Markup Language.
XML é usado para estruturar, armazenar e transportar dados de um sistema para outro.
XML é semelhante ao HTML.
Ele usa tags de abertura e fechamento.
Ao contrário do HTML, o XML permite que os usuários definam suas próprias tags.
O que é DOM?
DOM é a sigla para Document Object Model.
É um padrão multiplataforma e de linguagem neutra que define como acessar e manipular dados;
- HTML
- XHTML
- XML
DOM XML é usado para acessar e manipular documentos XML. Isto visualiza o documento XML como uma estrutura de árvore.
Analisadores de XML
Um analisador XML é um programa que traduz o documento XML em um objeto XML Document Object Model (DOM).
O objeto XML DOM pode então ser manipulado usando JavaRoteiro, Pythone PHP etc.
A palavra-chave CDATA, que é o acrônimo para (Unparsed) Character Data, é usada para ignorar caracteres especiais como “<,>” ao analisar um documento XML.
Por que usar XML?
- Serviços da Web como SOAP e REST usam o formato XML para trocar informações. Aprender o que é XML e como ele funciona proporcionará a você uma vantagem competitiva como desenvolvedor, já que os aplicativos modernos fazem uso intenso de serviços da web.
- Documentos XML podem ser usados para armazenar definições de configuração de um aplicativo
- Ele permite que você crie suas próprias tags personalizadas que o tornam mais flexível.
Exemplo de documento XML
Suponhamos que você esteja desenvolvendo uma aplicação que obtém dados de um serviço web em formato XML.
Abaixo está um exemplo da aparência do documento XML.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
AQUI,
- “ ” especifica a versão xml a ser usada e a codificação
- “ ”é o elemento raiz.
- “ … ”São os elementos filhos de administração e vendas, respectivamente.
Como ler XML usando PHP
Vamos agora escrever o código que lerá o documento XML dos funcionários e exibirá os resultados em um navegador da web. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
AQUI,
- “$xml = simplexml_load_file('employees.xml');” usa a função simplexml_load_file para carregar o nome do arquivo Employees.xml e atribuir o conteúdo à variável de matriz $xml.
- “$lista = $xml->registro;” obtém o conteúdo do nó de registro.
- “for ($i = 0; $i <count(…)…” é o loop for que lê o array numérico e gera os resultados
- “$lista[$i]->atributos()->man_no;” lê o atributo man_no do elemento
- “$lista[$i]->nome;” lê o valor do elemento filho do nome
- “$lista[$i]->posição;” lê o valor do elemento filho position
Testando nosso aplicativo
Supondo que você salvou o arquivo index.php na pasta phptus/xml, navegue até a URL http://localhost/phptuts/xml/index.php
Como criar um documento XML usando PHP
Veremos agora como criar um documento XML usando PHP.
Usaremos o exemplo acima no diagrama de árvore DOM.
O código a seguir usa o PHP integrado na classe DOMDocument para criar um documento XML.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'The Campaign'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
AQUI,
- “$dom = novo DOMDocument();” cria uma instância da classe DOMDocument.
- “$dom->encoding = 'utf-8';” define a codificação do documento para utf-8
- “$dom->xmlVersion = '1.0';” especifica o número da versão 1.0
- “$dom->formatOutput = true;” garante que a saída esteja bem formatada
- “$root = $dom->createElement('Movies');” cria o nó raiz chamado Filmes
- “$attr_movie_id = new DOMAttr('movie_id', '5467');” define o atributo movie id do nó Movies
- “$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')” cria o nó filho do nó Filmes. ElementName especifica o nome do elemento, por exemplo, Título. ElementValue define o valor do nó filho, por exemplo, The Campaign.
- “$root->appendChild($movie_node);” anexa os elementos movie_node ao nó raiz Movies
- “$dom->appendChild($root);” anexa o nó raiz ao documento XML.
- “$dom->save($xml_file_name);” salva o arquivo XML no diretório raiz do servidor web.
- “eco' ' . $xml_file_name . ' foi criado com sucesso';” cria o link para o arquivo XML.
Testando nosso aplicativo
Supondo que você salvou o arquivo create_movies_list na pasta phptuts/xml, navegue até o URL http://localhost/phptuts/xml/create_movies_list.php
Clique no link movies_list_xml
Resumo
- XML é a sigla para Extensible Markup Language
- XML pode ser usado para trocar informações entre sistemas ou armazenar configurações de um aplicativo, etc.
- DOM é a sigla para Document Object Model. XML DOM vê o documento XML como uma estrutura em árvore
- Um analisador XML é um programa que traduz XML um documento XML em um documento semelhante a uma estrutura de árvore DOM.
- CDATA é usado para ignorar caracteres especiais ao analisar documentos XML.
- PHP usa o simplexml_load_file para ler documentos XML e retornar os resultados como uma matriz numérica
- Classe PHP DOMDocument para criar arquivos XML.