Tutorial PHP XML: Criar, analisar, ler com exemplo

โšก Resumo Inteligente

PHP e XML trabalham juntos para estruturar, armazenar e trocar dados entre sistemas. Este guia explica XML, o DOM e os analisadores XML, mostra como ler um documento XML com SimpleXML e como criar um com a classe DOMDocument, e termina com a indicaรงรฃo de quando usar cada um.

  • ๐Ÿ“„ O que รฉ XML: XML รฉ a sigla para Extensible Markup Language (Linguagem de Marcaรงรฃo Extensรญvel), um formato baseado em tags que permite definir tags personalizadas para estruturar e transportar dados.
  • ???? O DOM: O Modelo de Objeto de Documento (DOM) visualiza um documento XML ou HTML como uma รกrvore, permitindo que o cรณdigo navegue e edite os nรณs.
  • ๐Ÿ”„ Analisadores XML: Um analisador sintรกtico converte um documento XML em um objeto DOM que o PHP pode usar. JavaRoteiro, ou Python Pode ler e alterar.
  • ๐Ÿ“– Leitura de XML: simplexml_load_file carrega um arquivo em objetos, entรฃo vocรช acessa os registros com sintaxe de seta, como $xml->record->name.
  • ๐Ÿ› ๏ธ Criaรงรฃo de XML: A classe DOMDocument constrรณi um documento nรณ por nรณ com createElement e appendChild, e entรฃo salva o arquivo.
  • โš–๏ธ SimpleXML vs DOM: O SimpleXML รฉ rรกpido para leitura, enquanto o DOMDocument รฉ adequado para criaรงรฃo precisa e manipulaรงรฃo complexa.
  • ๐Ÿค– Assistรชncia de IA: As ferramentas de IA podem gerar cรณdigo de anรกlise sintรกtica para uma estrutura XML especรญfica e converter entre arrays XML, JSON e PHP.

PHP e XML

O que รฉ XML?

XML รฉ a sigla para Extensible Markup Language.

O XML รฉ usado para estruturar, armazenar e transportar dados de um sistema para outro.

O 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 independente de idioma que define como acessar e manipular dados em:

  • 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 um documento XML em um objeto do Modelo de Objeto de Documento XML (DOM).

O objeto DOM XML pode entรฃo ser manipulado usando JavaRoteiro, Python, PHP e outras linguagens.

A palavra-chave CDATA, que รฉ a sigla para (unparsed) Character Data (Dados de Caracteres Nรฃo Analisados), รฉ usada para ignorar caracteres especiais como โ€œ<โ€ e โ€œ>โ€ ao analisar um documento XML.

Por que usar XML?

  • Serviรงos web como SOAP e REST usam o formato XML para trocar informaรงรตes. Aprender o que รฉ XML e como ele funciona oferece uma vantagem competitiva como desenvolvedor, jรก que as aplicaรงรตes modernas fazem uso extensivo de serviรงos web.
  • Os documentos XML podem ser usados โ€‹โ€‹para armazenar as configuraรงรตes de um aplicativo.
  • Permite criar suas prรณprias tags personalizadas, o que torna o sistema mais flexรญvel.

Exemplo de documento XML

Vamos supor que vocรช esteja desenvolvendoping Uma aplicaรงรฃo que obtรฉm dados de um serviรงo web em formato XML.

Abaixo segue um exemplo de como o documento XML se parece.

<?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 e a codificaรงรฃo a serem usadas
  • โ€œ โ€รฉ o elemento raiz.
  • โ€œ โ€ฆ Sรฃo os elementos filhos, um para cada registro de funcionรกrio.

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,

  • O cรณdigo โ€œ$xml = simplexml_load_file('employees.xml');โ€ utiliza a funรงรฃo simplexml_load_file para carregar o arquivo chamado employees.xml e atribuir o conteรบdo ร  variรกvel $xml.
  • โ€œ$list = $xml->record;โ€ obtรฉm o conteรบdo dos nรณs de registro.
  • โ€œfor ($i = 0; $i < count(โ€ฆ)โ€ฆโ€ รฉ o laรงo for que lรช o array e exibe 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 o leitor XML

Supondo que vocรช tenha salvo o arquivo index.php na pasta phptuts/xml, navegue atรฉ o URL http://localhost/phptuts/xml/index.php

Leia XML usando PHP

Como criar um documento XML usando PHP

Veremos agora como criar um documento XML usando PHP.

O cรณdigo a seguir utiliza a classe DOMDocument do PHP 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', 'Comedy');

$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 = new 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รณ do filme.
  • โ€œ$dom->createElement('ElementName', 'ElementValue')โ€ cria um nรณ filho. ElementName especifica o nome do elemento, por exemplo, Tรญtulo. ElementValue define o valor do nรณ filho, por exemplo, A Campanha.
  • โ€œ$root->appendChild($movie_node);โ€ anexa o nรณ do filme ao nรณ raiz Filmes
  • โ€œ$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.
  • O comando โ€œecho โ€œ$xml_file_name foi criado com sucessoโ€;โ€ exibe uma mensagem de sucesso.

Testando o XML Creator

Supondo que vocรช tenha salvo o arquivo create_movies_list.php na pasta phptuts/xml, navegue atรฉ o URL http://localhost/phptuts/xml/create_movies_list.php

Crie um documento XML usando PHP

Abra o arquivo movies_list.xml.

Crie um documento XML usando PHP

SimpleXML vs DOMDocument

O PHP oferece duas maneiras principais de trabalhar com XML. O SimpleXML รฉ mais indicado quando vocรช precisa principalmente ler dados, enquanto o DOMDocument oferece um controle mais preciso para construir e editar documentos de forma complexa. A tabela abaixo compara as duas opรงรตes.

Aspecto SimpleXML Documento DOMD
FรCIL DE USAR Muito simples; o documento se comporta como objetos aninhados. API mais detalhada, baseada em nรณs.
Melhor para Leitura e ediรงรฃo leve Criaรงรฃo de documentos e manipulaรงรฃo complexa
Estilo de acesso $xml->registro->nome criarElemento() e adicionarFilho()
Suporte XPath Sim, via ->xpath() Sim, atravรฉs da classe DOMXPath.

Uma regra prรกtica รฉ usar primeiro o SimpleXML para ler feeds e arquivos simples, e mudar para o DOMDocument quando precisar criar documentos, inserir nรณs em posiรงรตes especรญficas ou validar em relaรงรฃo a um esquema.

Perguntas Frequentes

Ambos armazenam dados estruturados, mas o XML usa tags e suporta atributos, comentรกrios e esquemas, enquanto o JSON รฉ mais leve e mapeia diretamente para arrays e objetos. O JSON รฉ comum para APIs; o XML รฉ adequado para documentos e configuraรงรตes.

Carregue o arquivo com SimpleXML ou DOMDocument, altere os valores ou atributos do nรณ e, em seguida, grave-o de volta. Com SimpleXML, edite a propriedade e chame asXML('arquivo.xml'); com DOMDocument, edite o nรณ e chame save().

XPath รฉ uma linguagem de consulta para selecionar nรณs em um documento XML. Em PHP, chame `$xml->xpath('//nome/do/registro')` com SimpleXML, ou use a classe `DOMXPath`, para buscar elementos correspondentes sem precisar procurar no XML.ping por toda a รกrvore.

Sim. A IA pode gerar cรณdigo usando simplexml_load_string, json_encode e json_decode para converter entre os formatos e sinalizar dados que nรฃo se encaixam perfeitamente, como atributos XML ou conteรบdo misto. Verifique o resultado.

Sim. Cole uma amostra do seu XML e a IA poderรก gerar cรณdigo SimpleXML ou DOMDocument que lรช exatamente os elementos e atributos de que vocรช precisa, incluindo loops para registros repetidos. Teste com arquivos reais.

Resuma esta postagem com: