Creare file XML con Ruby

8 luglio 2008

Un file XML, si sa, altro non è che un file di testo contenente una sequenza di stringhe formattate secondo precise specifiche. In questo articolo vedremo insieme come è possibile scrivere un file XML in modo automatico sfruttando alcune librerie a disposizione di Ruby.

L’articolo non propone immediatamente una soluzione basata completamente su Ruby ma segue un approccio più formativo, mostrando i vari livelli per arrivare a scrivere il nostro XML con una sintassi object oriented.

Chi desidera immediatamente scrivere un XML sfruttando completamente le librerie Ruby può saltare immediatamente al capitolo Scrivere un XML con Builder. Questo articolo presuppone una certa conoscenza del linguaggio XML. Per ulteriori approfondimenti su XML consiglio la lettura della Guida XML di Base.

Molti modi per scrivere un XML

Scrivere un documento XML è tutto sommato banale, sia che si utilizzi un linguaggio di programmazione sia che si scriva il codice direttamente a mano. Prendiamo il codice seguente, che rappresenta un documento XML valido.

<?xml version="1.0" encoding="UTF-8"?>
<articles>
  <article id="2644">Rails e Subversion</article>
  <article id="2619">Capistrano: il deployment Rails diventa facile</article>
  <article id="2616">ActiveRecord - un ORM per Ruby</article>
</articles>

Se copiamo il contenuto e lo incolliamo in un file, ecco che il risultato è un file XML valido.

In questo caso non abbiamo utilizzato alcun linguaggio di programmazione ma abbiamo raggiunto ugualmente l’obiettivo: scrivere un XML. Questa soluzione, tuttavia, è scomoda e tanto più laboriosa quanto lungo è il mio file XML. Inoltre, è del tutto inutile ai fini del nostro scopo: imparare a scrivere un XML con Ruby.

Scrivere un XML in una stringa

Procedendo per gradi, decidiamo che il primo passo è quello di sfruttare l’uso di Ruby, variabili e stringhe. Grazie alla sintassi Heredoc possiamo inglobare il nostro XML in una stringa e poi elaborarlo. Ad esempio, vediamo come salvarlo in un file.

xml = <<XML
<?xml version="1.0" encoding="UTF-8"?>
<articles>
  <article id="2644">Rails e Subversion</article>
  <article id="2619">Capistrano: il deployment Rails diventa facile</article>
  <article id="2616">ActiveRecord - un ORM per Ruby</article>
</articles>
XML

File.open('file.xml', 'w+') { |f| f.write(xml.chomp) }
# utilizzo chomp per rimuovere gli spazi ad inizio e fine della stringa
# => file.xml è stato creato con all'interno il contenuto di XML

Eseguendo questo script, otterremo un file chiamato file.xml con all’interno il nostro contenuto XML, disponibile nella variabile XML. Questa soluzione, sebbene contenga un’elaborazione Ruby, è poco più che un’esecuzione automatica di un processo manuale. Può andare bene se il contenuto XML arriva in ingresso da qualche input, ad esempio un database, in alternativa richiede sempre e comunque qualcuno che scriva a mano la stringa stessa.

Questa soluzione ancora non ci convince. Proviamo a migliorarla.

Se vuoi aggiornamenti su Creare file XML con Ruby inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Creare file XML con Ruby

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy