Skip line in XML with PHP

2

I'm trying to insert values into xml using php, and wanted to skip line before inserting if the file already exists so it does not overwrite what's already there. However the FILE_APPEND of file_puts_content does not work, the links I found on this subject recommend putting "
", "\ n", "\ r \ n" and PHP_EOL, however all of them have the error:

Catchable fatal error: Object of class DOMElement could not be converted to string

Codes:

function addMensagem($documento, $mensagem, $cpf_origem, $nomeArquivo) {

date_default_timezone_set('America/Sao_Paulo');

if (!file_exists($nomeArquivo)) {
    // criar msg
    $msg = $documento->createElement("msg");
    // criar nó data
    $data = date('j/n/Y H:i');
    $dataElm = $documento->createElement("data_envio", $data);
    // criar nó origem
    $cpf_origemElm = $documento->createElement("cpf_origem", $cpf_origem);
    // criar nó mensagem (texto)
    $mensagemElm = $documento->createElement("mensagem", $mensagem);

    $msg->appendChild($dataElm);
    $msg->appendChild($cpf_origemElm);
    $msg->appendChild($mensagemElm);
    return $msg;
} else {
    // $xml = simplexml_load_file("mensagens.xml");
    // criar msg
    $msg = $documento->createElement("msg");
    // criar nó data
    $data = date('j/n/Y H:i');
    $dataElm = $documento->createElement("data_envio", $data);
    // criar nó origem
    $cpf_origemElm = $documento->createElement("cpf_origem", $cpf_origem);
    // criar nó mensagem (texto)
    $mensagemElm = $documento->createElement("mensagem", $mensagem);

    $msg->appendChild($dataElm);
    $msg->appendChild($cpf_origemElm);
    $msg->appendChild($mensagemElm);
    // aqui q recomendaram colocar os negocios de pular linha
    // nom $msg de baixo
    file_put_contents($nomeArquivo, $msg, FILE_APPEND);
    return $msg;
}
}

// versão do encoding xml
$dom = new DOMDocument("1.0", "ISO-8859-7");
// criando nó principal
$root = $dom->createElement("mensagens");
// retirar os espaços em branco
$dom->preserveWhiteSpace = false;
// gerar código ??
$dom->formatOutput = true;

$nomeArquivo = "mensagens.xml";
// utilizando a função para criar as mensagens
$msg = addMensagem($dom, "Teste2", "12345678911", $nomeArquivo);
// adicionando ao root
$root->appendChild($msg);
$dom->appendChild($root);

// salva o arquivo
$dom->save($nomeArquivo);
// mostrar
header("Content-Type: text/xml");
print $dom->saveXML();
    
asked by anonymous 06.06.2018 / 04:23

1 answer

0

First remove the parameter $nomeArquivo and the condition that is inside the function, because if the file exists or will not execute the same code, then why repeat?

function addMensagem($documento, $mensagem, $cpf_origem) {
    // criar msg
    $msg = $documento->createElement("msg");
    // criar nó data
    $data = date('j/n/Y H:i:s');
    $dataElm = $documento->createElement("data_envio", $data);
    // criar nó origem
    $cpf_origemElm = $documento->createElement("cpf_origem", $cpf_origem);
    // criar nó mensagem (texto)
    $mensagemElm = $documento->createElement("mensagem", $mensagem);

    $msg->appendChild($dataElm);
    $msg->appendChild($cpf_origemElm);
    $msg->appendChild($mensagemElm);
    return $msg;
}

Now, after instantiating DOMDocument , it checks if the file exists, if so, load the file using the DOMDocument::load and retrieve the parent node: $dom->documentElement , if it does not exist, create a new element:

if ( !file_exists($nomeArquivo) ) {
    // criando nó principal
    $root = $dom->createElement("mensagens");
    // retirar os espaços em branco
    $dom->preserveWhiteSpace = false;
    // gerar código ??
    $dom->formatOutput = true;
} else {
    // carrega o arquivo
    $dom->load( $nomeArquivo );
    // recupera nó principal
    $root = $dom->documentElement;
}

The complete code

date_default_timezone_set('America/Sao_Paulo');

// Nome do arquivo
$nomeArquivo = "mensagens.xml";
// versão do encoding xml
$dom = new DOMDocument("1.0", "ISO-8859-7");

if ( !file_exists($nomeArquivo) ) {
    // criando nó principal
    $root = $dom->createElement("mensagens");
    // retirar os espaços em branco
    $dom->preserveWhiteSpace = false;
    // gerar código ??
    $dom->formatOutput = true;
} else {
    // carrega o arquivo
    $dom->load( $nomeArquivo );
    // recupera nó principal
    $root = $dom->documentElement;
}
$msg = addMensagem($dom, "Teste2", "12345678911");
// adicionando ao root
$root->appendChild($msg);
$dom->appendChild($root);

// salva o arquivo
$dom->save($nomeArquivo);

// mostrar
header("Content-Type: text/xml");
print $dom->saveXML();

function addMensagem($documento, $mensagem, $cpf_origem) {
    // criar msg
    $msg = $documento->createElement("msg");
    // criar nó data
    $data = date('j/n/Y H:i:s');
    $dataElm = $documento->createElement("data_envio", $data);
    // criar nó origem
    $cpf_origemElm = $documento->createElement("cpf_origem", $cpf_origem);
    // criar nó mensagem (texto)
    $mensagemElm = $documento->createElement("mensagem", $mensagem);

    $msg->appendChild($dataElm);
    $msg->appendChild($cpf_origemElm);
    $msg->appendChild($mensagemElm);
    return $msg;
}
    
06.06.2018 / 05:50