Manipulando XML com a SimpleXML

Quando eu começei a trabalhar com XML, principalmente em aplicações ajax, eu custumava fazer XML na mão, como se fossem string’s. Funcionavam, é verdade, mas não era uma boa solução, e na epoca eu pensava que a SimpleXML só servia para ler xml. Ledo engano.

A SimpleXML é bem mais poderosa do que eu imaginava, ela pode manipular XML da forma que você precisar, seja apenas para leitura ou para alteração.

Vou mostrar algum codigo pra provar que a SimpleXML é realmente muito simples.

Instanciando um objeto para gerar um XML:

$xml = simplexml_load_string( ‘<?xml version="1.0" encoding="utf-8"?><root></root>’ );

Ou entao você pode carregar um arquivo XML:

$xml = simplexml_load_file( ‘arquivoXML.xml’ );

A partir disso você pode manipular o XML como quiser. Vamos supor que você queira adicionar nós com atributos. Dois metodos são importantes agora: addChild e addAttribute. Um exemplo do metodo addChild:

$xml->addChild(‘database’);

Isso geraria um xml assim:

<?xml version="1.0" encoding="utf-8"?>
<root>
        <database></database>
</root>

Agora suponhamos que queremos adicionar um novo nó dentro de database chamado connection com varios atributos:

$xml->database->addChild(‘connection’);
$xml->database->connection->addAttribute(‘server’, ‘localhost’);
$xml->database->connection->addAttribute(‘user’, ‘root’);
$xml->database->connection->addAttribute(‘pass’, ’123′);
$xml->database->connection->addAttribute(‘schema’, ‘tabela’);

Com os codigos acima nosso XML ficaria assim:

<?xml version="1.0" encoding="utf-8"?>
<root>
        <database>
                <connection server="localhost" user="root" pass="123" schema="tabela" />
        </database>
</root>

Viu como é simples manipular XML com a SimpleXML?
Ah, se você precisar apagar um nó é ainda mais simples, basta usar o velho e conhecido unset, assim:

unset( $xml->database->connection );

E se você precisar salvar essa XML em arquivo é só usar a função file_put_contents, assim:

file_put_contents( ‘arquivoSaida.xml’, $xml->asXML() );

Então é isso, qualquer duvida sobre manipulação de XML posta ae nos comentarios.

:)

Referencias:
Manual do PHP: http://br.php.net/manual/en/ref.simplexml.php

Comments (3)

RobertoPCagosto 27th, 2009 at 09:38

Realmente é muito simples. Eu estava pesquisando formas de ler com XMLHttpRequest. Mas depois de ver isso mudei de idéia, vou usar o SimpleXML mesmo.. Vlw

tresloukaduoutubro 19th, 2009 at 20:48

é muito simples mesmo …. e com acentuação e cdata como fica ?

NKROXdezembro 13th, 2009 at 16:32

Cara, parabens! Ta muito bem explicado! Tem muita gente ai na internet criando tempestade num copo dagua com simplexml.

Leave a comment

Your comment