Quarda, XMl è molto potente.. certo, un database è molto più veloce, ottimizzato ecc... io però sto parlando di un log, o al max di un sito internet di medie dimensioni.. Usare XML è efficacie solamente se i dati da immagazzinare non sono eccessivi (per eccessivi intendo che il file XML non superi la dimensione di 200-300Kbyte)..in genere uso questa tecnica:
Il file/files xml li uso solamente per la logica strutturale dell'applicazione web (indici, strutture gerarchiche ecc...) e poi uso file di testo normali per le parti con contenuti xHTML da includere poi un una pagina PHP al momento della complilazione.. in pratica una cosa del genere:
Codice PHP:
<root>
   <
comment id="1" data="gg/mm/aaa" ip="xx.xx.xx.xx" titolo="blablalba" include="comm_1.txt" />
   
ECC...
</
root
In questo caso php+DOM ti danno l'opportunità di scandire/esaminare la struttura xml e poi puoi ad esempio recuperare in giusto file di include, e includerlo nella tua pagina php, così da mostrarlo!

DI SEGUITO UN O DI FUNZIONI DI ESEMPIO PER ESAMINARE/MODIFICARE/MANIPOLARE un XML DA PHP
Codice PHP:
<?php
/* Funzione che crea un documento xml partendo dal 
 * nome del file xml e il nome dell'elemento root */ 
function new_xml_doc($path_xml_file$root_node_name){
    
/* creo il documento base */
    
if(!file_exists($path_xml_file)){
        
//creo il file vuoto
        
$f fopen($path_xml_file"w") or
            die(
"Impossibile creare il file $path_xml_file");
        
fclose($f);    
        
        
/*Scrivo nel file il root node*/
        
$doc domxml_new_doc('1.0');
        
$root $doc->create_element($root_node_name);
        
$doc->append_child($root);    //metto il nodo radice nel document
            
        /*Scrivo il file*/
        
$doc->dump_file(realpath($path_xml_file), falsefalse) or
            die(
"Errore durante la scrittura del file xml: $path_xml_file");     
            
        
$doc null;
    }
}
?>
Codice PHP:
<?php
/* Permette di effettuare le modifiche ad un file xml */
function doc2file($doc$path_xml_file){
    
/* backup del file dati */
    
@copy($path_xml_file$path_xml_file ".old") or
        die(
"errore durante la copia del file di backup");
        
    
$doc->dump_file(realpath($path_xml_file), falsefalse) or
        die(
"Errore durante la scrittura del file xml: $path_xml_file");         
}
?>
Codice PHP:
<?
/* Inserimento di una nuova entry */
function add_element($path_xml_file$nome$descrizione){
    
new_xml_doc($path_xml_file"root");    //creo il document base se non esiste
    
    
$doc = @domxml_open_file($path_xml_file);
    
$root $doc->document_element();    //il nodo root
    
    
$id_max_entry get_max_id($path_xml_file);    //l'id massimo delle entry
    
    /* creo l'antry nuova con i figli */
    
$entry $doc->create_element("entry");
    
$entry->set_attribute("id"$id_max_entry 1);
    
    
$nome_nodo $doc->create_element("nome");
    
$descr_nodo $doc->create_element("descrizione");
    
    
/* i contenuti dei figli */
    
$nome_cdata_nodo $doc->create_cdata_section($nome);
    
$descr_cdata_nodo $doc->create_cdata_section($descrizione);
    
    
/* append */
    
$nome_nodo->append_child($nome_cdata_nodo);
    
$descr_nodo->append_child($descr_cdata_nodo);

    
$entry->append_child($nome_nodo);
    
$entry->append_child($descr_nodo);
    
    
$root->append_child($entry);

    
/* scrivo le modifiche nel file */
    
doc2file($doc$path_xml_file);
}
?>
Codice PHP:
<?
/* Restituisce il numero di entrues */
function get_num_of_entryes($path_xml_file){
    
$query "/root/entry";    //query XPath per contare le entryes
    
new_xml_doc($path_xml_file"root");    //creo il document base se non esiste
    
    
$doc = @domxml_open_file($path_xml_file);
    
/* Recupero numero entryes tramite Xpath per l'id univoco */
    
$xp $doc->xpath_new_context();
    
$xpathObj $xp->xpath_eval($query);
    
    return 
count($xpathObj->nodeset);    //Numero totale delle entry
}
?>
Questi sono solamente piccolissimi esempi... per tutte le altre info:
http://it.php.net/manual/it/ref.domxml.php

PS: naturalmente gli sforzi di implementazioni sono molto maggiori rispetto all'usare un database... qui tutti il parser occorre farlo programmaticamente..non basta usare query SQLVVoVe: Ho iniziato ad implementare siti basati su XMl come "database" puramente per curiosità, ed ora non riesco a liberarmene!