Perché sono necessari i formati di testo?

I formati di testo sono utili per memorizzare le informazioni perché possono essere creati ed elaborati sia dai programmi che dagli esseri umani.

I file di testo (file in formato testo) possono essere aperti, letti e modificati in un'ampia varietà di editor di testo.

Molti programmi utilizzano file di configurazione basati su testo, anche se il formato contiene numeri e valori binari (sì/no).

Ciò rende i programmi un po' più complicati a causa della necessità di convertire da testo a un formato interno e viceversa, ma rende possibile modificare la configurazione manualmente senza utilizzare uno strumento di configurazione nel programma stesso.

Dove viene utilizzato XML adesso?

XML è utilizzato in varie aree dell'IT. Possono essere file di configurazione (con impostazioni del programma) o file utilizzati per trasferire dati tra programmi. In Java, uno dei casi d'uso più comuni è la configurazione di Maven, uno strumento di automazione della compilazione.

Struttura di un documento XML

Le strutture fisiche e logiche di un documento XML sono mantenute separate. In termini di struttura fisica, il documento è costituito da entità che possono fare riferimento ad altre entità.

L'unico elemento radice è l'entità documento. Un'entità è la parte più piccola di un documento. Tutte le entità hanno un nome e contengono caratteri.

A loro volta, i caratteri appartengono a una delle due categorie: dati carattere o markup.

Il markup include:

  • tag, che denotano i limiti degli elementi;
  • dichiarazioni e istruzioni di elaborazione, compresi i loro attributi;
  • riferimenti di entità;
  • Commenti;
  • sequenze di caratteri che racchiudono sezioni CDATA.

Logicamente, il documento è costituito da elementi, commenti, dichiarazioni, riferimenti a entità e istruzioni di elaborazione. Il markup viene utilizzato per creare tutta questa struttura in un documento.

Tutte le parti costitutive di un documento sono suddivise in un prologo e un elemento radice. L'elemento radice è la parte obbligatoria ed essenziale di un documento XML, mentre il prologo potrebbe non esistere affatto. L'elemento radice può essere costituito da elementi nidificati, dati carattere e commenti. Gli elementi di un documento devono essere nidificati correttamente: qualsiasi elemento che inizia all'interno di un altro elemento deve anche terminare all'interno di quell'elemento.

Simboli di marcatura

Il markup inizia sempre con < e termina con > .

I simboli < e > (parentesi angolari) e & (e commerciale) svolgono un ruolo speciale. Le parentesi angolari indicano i limiti degli elementi, le istruzioni di elaborazione e alcune altre sequenze. E la e commerciale ci aiuta a sostituire il testo con le entità.

Dichiarazione XML

Una dichiarazione XML specifica la versione del linguaggio utilizzato per scrivere il documento. La specifica XML dice di iniziare un documento con una dichiarazione XML perché la corretta interpretazione del contenuto del documento dipende dalla versione del linguaggio.

Nella prima versione del linguaggio (1.0), questa dichiarazione era facoltativa, ma è obbligatoria nelle versioni successive. Si presume che una dichiarazione mancante indichi la versione 1.0. La dichiarazione può contenere anche informazioni sulla codifica del documento.

Esempio:

<?XML version="1.1" encoding="UTF-8" ?>

Tag

Un tag è un costrutto di markup che contiene il nome di un elemento. Ci sono tag di inizio e tag di fine. Esistono anche tag di elementi vuoti che combinano elementi iniziali e finali.

Esempi:

  • Tag iniziale: <tag1>

  • Tag di fine: </tag1>

  • Tag elemento vuoto: <empty_tag1 />

Attributi

Un'altra parte degli elementi XML sono gli attributi. Un elemento può avere più attributi univoci. Gli attributi ci consentono di specificare ulteriori informazioni su un elemento. O più precisamente, gli attributi definiscono le proprietà degli elementi.

Un attributo è sempre una coppia nome-valore:

nome = "valore"

Esempio di un attributo in un tag:

<tag1 name = "value">elemento</tag1>

Il valore di un attributo deve essere racchiuso tra virgolette doppie ( " ) o virgolette singole ( ' ). Gli attributi vengono utilizzati solo nei tag di inizio e nei tag di elementi vuoti.

Escape di cinque caratteri speciali (<, >, ', ”, &)

Ovviamente, i simboli < , > e & non possono essere usati come tali nei dati carattere e nei valori degli attributi. Hai bisogno di speciali sequenze di escape per rappresentarli. Sequenze speciali vengono utilizzate anche quando si scrivono apostrofi e virgolette all'interno dei valori degli attributi:

Simbolo Sostituzione
< <
> >
& &
' '
" "

Inoltre, per scrivere il carattere \ , devi usare \\ .

sezione CDATA

Una sezione CDATA non è un'unità logica di testo. Questo tipo di sezione può verificarsi laddove la sintassi XML ci consente di inserire dati carattere nel documento.

La sezione inizia con <![CDATA[ e termina con ]]> . I dati dei caratteri vengono inseriti tra questi bit di markup e i simboli < , > e & possono essere utilizzati nella loro forma diretta.

Commenti

I commenti non sono considerati dati di carattere. Un commento inizia con <!-- e termina con --> . La sequenza di caratteri -- non può essere utilizzata all'interno di un commento. Inoltre, all'interno di un commento, il carattere e commerciale non denota markup.

Esempio:

<!-- questo è un commento -->

Nomi

In XML, tutti i nomi possono contenere solo lettere nella tabella dei caratteri Unicode, numeri arabi, punti, due punti, trattini e caratteri di sottolineatura. I nomi possono iniziare con una lettera, due punti o un carattere di sottolineatura. Si noti che un nome non può iniziare con la stringa XML .

Esempio

Diamo un'occhiata a una classe Java e un oggetto di quella classe. Quindi proveremo a serializzare l'oggetto in formato XML. Codice classe:


public class Book {
   private String title;
   private String author;
   private Integer pageCount;
   private List<String> chapters;

   public Book(String title, String author, Integer pageCount, List<String> chapters) {
       this.title = title;
       this.author = author;
       this.pageCount = pageCount;
       this.chapters = chapters;
   }
// Getters/setters
}

e creazione di oggetti:


Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));

Ecco un esempio di una rappresentazione XML valida di un oggetto Java che contiene 4 campi, uno dei quali è una raccolta (vedere il codice Java sopra):

<Book>
  <title>Il mio libro preferito</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>Capitolo 1</chapters>
    <chapters>Capitolo 2</chapters>
    <chapters>Capitolo 3</chapters>
    <chapters>Capitolo 4</chapters>
    <chapters>Capitolo 5</chapters>
    <chapters>Capitolo 6</chapters>
 </chapters>
</Book>

Schema XML

Uno schema XML è la descrizione della struttura di un documento XML. La specifica corrispondente (XML Schema Definition, o XSD) è una raccomandazione del W3C.

XSD è stato progettato per esprimere le regole che un documento XML deve seguire. Ma la cosa più interessante per noi è che XSD è stato progettato per essere utilizzato durante lo sviluppo di software che elabora documenti XML. Ci consente di verificare la correttezza di un documento XML a livello di codice.

I file contenenti uno schema XML hanno l'estensione .xsd. La progettazione di uno schema XML va oltre lo scopo di questa lezione, quindi per ora tieni presente che la possibilità esiste.