segunda-feira, 19 de maio de 2008

PHP5 - Manipulando documentos XML com PHP

Bem, para manipular documentos XML em php temos a função simplexml_load_file, onde devemos somente passar o nome do arquivo XML por parâmetro para esta função e ela se encarrega de criar um objeto do tipo SimpleXmlElement para nós.
Observação: Se o arquivo XML estiver mal formatado ou não seja um documento XML está função retornará false.

Vamos ao código:
Arquivo pessoa.xml.


<?xml version="1.0" encoding="utf-8"?>
<pessoas>
<pessoa>
<nome>Juca Bala</nome>
<data_nascimento>10/10/2008</data_nascimento>
<nome_mae>Joana Bala</nome_mae>
</pessoa>
<pessoa>
<nome>Josiel Almeida</nome>
<data_nascimento>10/12/2008</data_nascimento>
<nome_mae>Josefa Almeida</nome_mae>
</pessoa>
<pessoa>
<nome>Carlos Freitas</nome>
<data_nascimento>10/05/2008</data_nascimento>
<nome_mae>Catarina Freitas</nome_mae>
</pessoa>
</pessoas>



Arquivo manipula_xml.php


<php
//cria o objeto SimpleXmlElement
$objXML = simplexml_load_file('pessoa.xml');

//imprime atributos do objeto criado
echo 'Nome da pessoa = '.$objXML->pessoa[0]->nome.'<br />';
echo 'Data de Nascimento = '
.$objXML->pessoa[0]->data_nascimento.'<br />';
echo 'Nome da mãe = '.$objXML->pessoa[0]->nome_mae.'<br />';
?>



Pegando valores do objeto com foreach ou pelo método children().



<?php
//cria o objeto SimpleXmlElement
$objXML = simplexml_load_file('pessoa.xml');

//imprime atributos do objeto criado
foreach ( $objXML->pessoa as $objPessoa )
{
echo 'Nome da pessoa = '.$objPessoa->nome.'<br />';
echo 'Data de Nascimento = '
.$objPessoa->data_nascimento.'<br />';
echo 'Nome da mãe = '.$objPessoa->nome_mae.'<br /><br />';
}

//imprime as string contendo o código XML
echo $objXML->asXML();

echo '<br /><br />';

//obtém os objetos filhos do objeto (sub-nodos), bem
//como seus valores
foreach ( $objXML->children() AS $objPessoa )
{
echo 'Nome da pessoa = '.$objPessoa->nome.'<br />';
echo 'Data de Nascimento = '
.$objPessoa->data_nascimento.'<br />';
echo 'Nome da mãe = '.$objPessoa->nome_mae.'<br /><br />';
}
?>


Inserindo dados novos no arquivo XML, criando novo nodo e gravando os dados.



<?php
//cria o objeto SimpleXmlElement
$objXML = simplexml_load_file('pessoa.xml');

//verifica total de nodos para inserir no final um novo nodo
$intTotalNodo = count($objXML->pessoa);

//insere e grava dados no arquivo XML
$objXML->pessoa[$intTotalNodo]->nome = 'Jean Carlos';
$objXML->pessoa[$intTotalNodo]->data_nascimento = '31/05/1994';
$objXML->pessoa[$intTotalNodo]->nome_mae = 'Joana Ramos';
$objXML->pessoa[$intTotalNodo]->esporte = 'futebol';

//imprime as string contendo o código XML
echo $objXML->asXML();

//cria um novo nodo
$objXML->pessoa->addChild('esporte', 'futebol');

//escreve no arquivo
file_put_contents('pessoa.xml', $objXML->asXML());
?>


Falou galera!
Abraços.

Nenhum comentário:

Postar um comentário