Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Herbert Hudson

Atualização De Arquivo Xml Com Php

Recommended Posts

e ai galera beleza.

 

Sou iniciante ai em php e já li a documentação php procurando entender como fazer atualização de xml e também procurei pela internet várias vezes, durante muito tempo antes de vir postar num fórum, procurei aqui no fórum e em outros também, mas só achei como fazer a leitura ou criar um arquivo xml.

 

Meu problema é o seguinte, estou querendo atualizar um arquivo xml, incluir um novo valor, por exemplo, para teste fiz uma função para gravar erros, em arquivos xml.

exemplo de arquivo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<erros>
        <valor>
                <file>file</file>
                <line>line</line>
                <trace>trace</trace>
                <date>date</date>
                <code>code</code>
                <message>message</message>
        </valor>
</erros>

e gostaria de fazer uma forma do php incluir um valor no xml.

Assim:

<?xml version="1.0" encoding="ISO-8859-1"?>
<erros>
        <valor>
                <file>file</file>
                <line>line</line>
                <trace>trace</trace>
                <date>date</date>
                <code>code</code>
                <message>message</message>
        </valor>
        <valor>
                <file>file</file>
                <line>line</line>
                <trace>trace</trace>
                <date>date</date>
                <code>code</code>
                <message>message</message>
        </valor>
</erros>

fiz essa função para poder incluir o valor no xml mas não está incluindo corretamente.

function writeErroXML($file,$line,$trace,$date,$code,$message){
        $fileName = $_SERVER['DOCUMENT_ROOT'] . "/Log/" . date("d-m-Y") . ".xml";

        if(file_exists($fileName)){
                $xml = simplexml_load_file($fileName);
                $xml->addChild('valor');
                $xml->valor->addChild('file',$file);
                $xml->valor->addChild('line',$line);
                $xml->valor->addChild('trace',$trace);
                $xml->valor->addChild('date',$date);
                $xml->valor->addChild('code',$code);
                $xml->valor->addChild('message',$message);
                $fl = fopen($fileName, "a");
                
                if(fwrite($fl,$xml->asXML())){
                        fclose($fl);
                        return true;
                }
                else{
                        return false;
                }
        }
        else{
                $xml = simplexml_load_string('<?xml version="1.0" encoding="ISO-8859-1"?><erros></erros>');
                $xml->addChild('valor');
                $xml->valor->addChild('file',$file);
                $xml->valor->addChild('line',$line);
                $xml->valor->addChild('trace',$trace);
                $xml->valor->addChild('date',$date);
                $xml->valor->addChild('code',$code);
                $xml->valor->addChild('message',$message);
                $fl = fopen($fileName,"a");
                
                if(fwrite($fl,$xml->asXML())){
                        fclose($fl);
                        return true;
                }
                else{
                        return false;
                }
        }
}

mas a função não está gravando corretamente, se alguém puder me auxiliar, ou me mandar um link de um exemplo de atualização, eu agradeço.

A gravação e leitura não tenho problema é só mesmo a atualização, pois preciso dessa atualização pois irei gravar algumas configurações no do site que estou trabalhando em xml, para aproveitar o espaço da hospedagem.

 

vlw galera, fico aguardando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm, prefiro trabalhar com DOM, para salvar ficaria assim:

 

erros.xml http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Antes

<?xml version="1.0" encoding="ISO-8859-1"?>
<erros>
<valor>
<file>file</file>
<line>line</line>
<trace>trace</trace>
<date>date</date>
<code>code</code>
<message>message</message>
</valor>
</erros>

 

teste.php

$dom = new DOMDocument( '1.0' , 'ISO-8859-1' );
$dom->preserveWhiteSpace = false;
$dom->load( 'erros.xml' );
$dom->formatOutput = true;

$erros = $dom->getElementsByTagName( 'erros' )->item( 0 );
$erros->appendChild( $value = $dom->createElement( 'valor' ) );

$value->appendChild( $dom->createElement( 'file' , 'Nome do arquivo' ) );
$value->appendChild( $dom->createElement( 'line' , '123' ) );
$value->appendChild( $dom->createElement( 'trace' , 'debug_backtrace' ) );
$value->appendChild( $dom->createElement( 'date' , 'data do erro' ) );
$value->appendChild( $dom->createElement( 'code' , 'código' ) );
$value->appendChild( $dom->createElement( 'message' , 'Mensagem' ) );
$dom->save( 'erros.xml' );

 

erros.xml http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Depois

<?xml version="1.0" encoding="ISO-8859-1"?>
<erros>
<valor>
<file>file</file>
<line>line</line>
<trace>trace</trace>
<date>date</date>
<code>code</code>
<message>message</message>
</valor>
<valor>
<file>Nome do arquivo</file>
<line>123</line>
<trace>debug_backtrace</trace>
<date>data do erro</date>
<code>código</code>
<message>Mensagem</message>
</valor>
</erros>

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa! vlw kra, tinha testado com DOM também mas tinha dado errado, vou testar esse código

vlw mesmo brigadão...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.