W3docs

saveXML()

SimpleXML é uma extensão PHP para trabalhar com XML. O método SimpleXMLElement::saveXML() serializa um objeto em XML como string ou arquivo.

Introdução

SimpleXML é uma extensão PHP que fornece uma API simples e fácil de usar para trabalhar com documentos XML. O método SimpleXMLElement::saveXML() é a forma padrão de converter um objeto SimpleXMLElement de volta para XML — seja como uma string na memória ou como um arquivo em disco.

Normalmente você recorre ao saveXML() no final de um fluxo de trabalho: após carregar XML (com simplexml_load_string()) ou construí-lo nó a nó (com addChild()), o saveXML() serializa o resultado para que você possa retorná-lo, armazená-lo ou enviá-lo pela rede.

Este artigo abrange a assinatura do método, como ele difere do asXML(), e exemplos práticos incluindo formatação legível.

Sintaxe

public SimpleXMLElement::saveXML(?string $filename = null): string|false
  • $filenameOpcional. Se fornecido, o XML é gravado neste arquivo e o método retorna true em caso de sucesso ou false em caso de falha. O diretório de destino deve já existir e ser gravável pelo processo PHP. Se omitido (padrão), o método retorna o XML como uma string em vez de gravar um arquivo.
  • Valor de retorno — Uma string contendo o XML serializado quando $filename é omitido; um bool indicando sucesso quando $filename é fornecido. Retorna false somente em caso de falha.

SimpleXMLElement::saveXML() é um alias de SimpleXMLElement::asXML() — os dois métodos são intercambiáveis e aceitam o mesmo argumento opcional $filename. Note que, ao contrário de DOMDocument::saveXML(), a versão SimpleXML não aceita um argumento $options; passar um lança um ArgumentCountError.

Salvando XML em uma string

Chame saveXML() sem argumentos para obter o documento como uma string:

php— editable, runs on the server

Isso imprime o documento completo, incluindo a declaração XML:

<?xml version="1.0"?>
<book><title>PHP Basics</title></book>

Criamos um SimpleXMLElement representando um elemento book com um filho title, em seguida serializamos toda a árvore de volta para uma string.

Construindo XML antes de salvar

No código real, você normalmente constrói a árvore dinamicamente com addChild() e a serializa no final:

<?php

$catalog = new SimpleXMLElement('<catalog></catalog>');

$book = $catalog->addChild('book');
$book->addChild('title', 'Learn PHP');
$book->addChild('author', 'W3docs');

echo $catalog->saveXML();

Saída:

<?xml version="1.0"?>
<catalog><book><title>Learn PHP</title><author>W3docs</author></book></catalog>

Salvando XML em um arquivo

Passe um nome de arquivo para gravar o documento diretamente em disco. Neste modo, saveXML() retorna um booleano, então verifique-o antes de assumir que a gravação foi bem-sucedida:

<?php

$xml = new SimpleXMLElement('<book><title>PHP Basics</title></book>');
$success = $xml->saveXML('output.xml');

if ($success) {
    echo "XML saved successfully.";
} else {
    echo "Failed to save XML.";
}

Um resultado false quase sempre significa um problema de permissões ou de caminho — o diretório não existe ou o processo PHP não consegue gravar nele.

Formatando a saída de forma legível

O SimpleXML serializa tudo em uma única linha e não oferece nenhuma opção de formatação. Para obter XML legível e indentado, passe a string para DOMDocument, que sim suporta formatOutput:

<?php

$xml = new SimpleXMLElement('<catalog><book><title>Learn PHP</title></book></catalog>');

$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->saveXML());

echo $dom->saveXML();

Saída:

<?xml version="1.0"?>
<catalog>
  <book>
    <title>Learn PHP</title>
  </book>
</catalog>

Conclusão

SimpleXMLElement::saveXML() é a etapa de serialização do fluxo de trabalho SimpleXML: converte um SimpleXMLElement em uma string XML ou o grava em um arquivo usando uma sintaxe orientada a objetos clara. Lembre-se de que ele aceita apenas um $filename opcional, que é um alias de asXML(), e que a formatação legível deve passar pelo DOMDocument. Para construir documentos antes de salvar, consulte addChild(); para a API mais ampla, consulte a visão geral do SimpleXML.

Prática

Prática
Em PHP, quais etapas podem ser usadas para gerar um arquivo XML a partir de um objeto PHP?
Em PHP, quais etapas podem ser usadas para gerar um arquivo XML a partir de um objeto PHP?
Was this page helpful?