Introdução
Com o advento do XML se faz necessário saber como criar esse tipo de arquivo. Pelo fato não precisar de um editor específico para manipular esse tipo de arquivo, muitos desenvolvedores criam a estrutura em uma variável e jogam o conteúdo na função file_put_contents, por exemplo.
Exemplo de criação de XML com parsing
$content = '<root>'; $content .= '<nodeOne>valueOne</nodeOne>'; $content .= '<nodeTwo>valueTwo</nodeTwo>'; $content .= '</root>'; file_put_contents('filename.xml', $ontent);
Tudo bem, essa é uma maneira de fazer esse trabalho, entretanto, no meu ver, é bem trabalhosa e soa como um ‘workaround’, isto é, uma ‘gambiarra’ bem sacana.
O PHP 5 oferece-nos um objeto prontinho para trabalharmos com XML, veja um exemplo comentado:
Exemplo de criação de XML com DOMDocument
//Instanciamos o objeto passando como valor a versão do XML e o encoding (código de caractéres) $dom = new DOMDocument('1.0','UTF-8'); //Nesse ponto, informamos para o objeto que não queremos espaços em branco no documento $dom->preserveWhiteSpaces = false; //Aqui, dizemos para o objeto que queremos gerar uma saída formatada $dom->formatOutput = true; //Pronto! Configurações inicias realizadas, agora partiremos para a criação dos elementos que compõe a árvore do documento XML //Criação do elemento root (elemento pai) $root = $dom->createElement('root'); //Vamos criar o elemento nodeOne, conforme o exemplo anterior $nodeOne = $dom->createElement('nodeOne'); //Agora o elemento nodeTwo $nodeTwo = $dom->createElement('nodeTwo'); //criados os elementos, vamos adicionar um valor para cada um deles $nodeOneTxt = $dom->createTextNode('valueOne'); $nodeTwoTxt = $dom->createTextNode('valueTwo'); //Pronto! Elementos criados, o próximo passo é organizar essa bagunça, para isso, usaremos o método appendChild() e diremos quem é elemento pai e quem é elemento filho $nodeOne->appendChild($nodeOneTxt); $nodeTwo->appendChild($nodeTwoTxt); $root->appendChild($nodeOne); $root->appendChild($nodeTwo); $dom->appendChild($root); //Dessa forma, dissemos que os elementos nodeOne e nodeTwo são filhos do elemento root, isto é, estão dentro de root ou um nível abaixo de root. //Para imprimir na tela, utilizamos o método saveXML() $dom->saveXML(); //Por fim, para salvarmos o documento, utilizamos o método save() $dom->save('filename.xml');
Se você utilizar exatamente esse código, você terá uma saída idêntica a saída mostrada abaixo.
<?xml version="1.0" encoding="UTF-8"?> <root> <nodeOne>valueOne</nodeOne> <nodeTwo>valueTwo</nodeTwo> </root>
Ainda podemos escrever um atributo em um determinado elemento, para isso, basta utilizar o método setAttribute(), que possui como parâmetros o nome do atributo e o valor do mesmo, respectivamente. Vejamos um exemplo.
Exemplo de um elemento com atributo
... //Apenas modificando o exemplo acima, vamos acrescentar a seguinte linha de código logo após a linha 18 $nodeTwo->setAttribute('attr','valueAttr'); ...
Alterando o código, a saída fica assim
<?xml version="1.0" encoding="UTF-8"?> <root> <nodeOne>valueOne</nodeOne> <nodeTwo attr="valueAttr">valueTwo</nodeTwo> </root>
Video-aula: Escrevendo XML com PHP 5 (DOMDocument) por lemissel no Videolog.tv.
Buenas! Espero ter ajudado os colegas.
Cara valeu pela ajuda, mas queria saber se tem como usar o DOM com SQL Server se tiver tem como postar um exemplo? Valeu Abração, Parabens…
No caso de uma consulta?
Coloquei desta forma dentro de um while, só me retornou um registro..
Como poderia fazer neste caso?