Publicidade

Herbert Hudson

Atualização De Arquivo Xml Com Php

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.

0

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>

0

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...

Editado por Matias Rezende
Retirada de Quote desnecessário
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos