Já falei aqui como ler dados com XML e PHP mas acho que a grande duvida é como editar e salvar esses dados depois. A primeira parte que temos que fazer é entender a SimpleXML, pois é essa biblioteca que irá ajudar agente em todo o processo. A SimpleXML transforma os dados do XML em um objeto fácil de manipular pelo PHP. Vamos pegar como exemplo o XML a seguir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="UTF-8"?> <agenda version="1.0" author="Erle Carrara"> <pessoa id="1"> <nome>João Felipe</nome> <fone>55 5664-8642</fone> </pessoa> <pessoa id="2"> <nome>Mario Augusto</nome> <fone>55 3586-3486</fone> </pessoa> <pessoa id="3"> <nome>Maria de Fátima</nome> <fone>55 3214-4586</fone> </pessoa> </agenda> |
Esse XML representa uma simples agenda, desenvolvi recentemente uma agenda mais avançada(com suporte a imagem de perfil, senha e várias outras opções), mas essa para nós comerçamos já está de bom tamanho. Para deixar esses dados de uma forma amigavel para trabalhar com PHP vamos usar a SimpleXML, criando um novo documento com nesse arquivo.
1 | <?php $agenda = new SimpleXMLElement('agenda.xml', null, true); |
Agora podemos manipular a agenda de forma simple, tanto para pegar seus valores como para definir um novo valor.
3 4 5 6 7 8 9 10 | // vamos alterar o nome da primeira pessoa na agenda $agenda->pessoa[0]->nome = 'Fulano'; // definir o tipo de arquivo retornado como XML header('Content-Type: text/xml'); // agora usando o metodo asXML iremos mostrar o NOVO XML echo $agenda->asXML(); |
Como vocês podem ver a SimpleXML modificou a àrvore xml que ela guardava e exibimos ela novamente. Agora para salvar esses dados podemos usar a função file_put_contents() do PHP.
11 12 | // salvando a nova agenda no arquivo file_put_contents('agenda.xml', $agenda->asXML()); |
É importante lembrar que as alterações feitas pelo SimpleXML são são salvas realmente o disco quando passamos o resultado dela no formato XML para um arquivo, ou seja salvamos o retorno dado pela funçaõ asXML(). Com base nisso podemos criar vários sistemas sem a necessidade de um banco de dados.




