Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

Atualização De Arquivo Xml Com Php

  • Por favor, faça o login para responder
2 respostas neste tópico

#1 Herbert Hudson

Herbert Hudson

    H - eitch

  • Membros
  • 42 posts

Postado 26 janeiro 2010 - 23:46

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

#2 João Batista Neto

João Batista Neto

    Verschränkung

  • Administradores
  • 4.554 posts

Postado 27 janeiro 2010 - 07:09

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

erros.xml :seta: 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 :seta: 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

#3 Herbert Hudson

Herbert Hudson

    H - eitch

  • Membros
  • 42 posts

Postado 27 janeiro 2010 - 11:53

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, 27 janeiro 2010 - 12:05 .
Retirada de Quote desnecessário

  • 0




Publicidade

/ins>