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