Creare file XML con Ruby

di: Simone Carletti     08 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.

Guide Ruby

Guida ActiveSupport

Una panoramica sulle funzionalità più importanti di ActiveSupport:...

Guida Ruby On Rails 2

Scoprire le novità di Ruby on Rails 2, memorizzare i dati con...

Guida Ruby e il Web

Un percorso alla scoperta delle potenzialità offerte da Ruby nella...

Altre guide

Newsletter @Ruby

Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto