Se hai lavorato con API aziendali legacy, consumato feed RSS, aperto un file .docx,
o disegnato un SVG, hai usato XML — anche se non lo sapevi. XML alimenta più del mondo del software
di quanto la maggior parte degli sviluppatori si renda conto. È più vecchio di JSON, più verboso e più complesso — ma anche più
capace in contesti specifici. Questa è una guida pratica su cosa sia realmente XML, come funziona,
e quando abbia ancora senso usarlo.
XML è l'acronimo di eXtensible Markup Language. Il W3C ha pubblicato la specifica XML 1.0 nel 1998, e divenne il formato di scambio dati dominante della prima era del web. La parte "estensibile" è fondamentale: a differenza dell'HTML che ha un insieme fisso di tag, XML ti permette di definire i tuoi tag per descrivere qualsiasi struttura dati di cui hai bisogno.
Come Appare XML
Ecco un documento XML completo che rappresenta un prodotto di un'API e-commerce. Questo copre tutte le funzionalità sintattiche principali che incontrerai:
<?xml version="1.0" encoding="UTF-8"?>
<product id="SKU-8821" inStock="true">
<name>Wireless Noise-Cancelling Headphones</name>
<brand>SoundCore</brand>
<price currency="USD">149.99</price>
<categories>
<category>Electronics</category>
<category>Audio</category>
<category>Accessories</category>
</categories>
<specs>
<spec name="battery">30 hours</spec>
<spec name="connectivity">Bluetooth 5.2</spec>
<spec name="weight">250g</spec>
</specs>
<description>
Premium wireless headphones with active noise cancellation,
30-hour battery life, and foldable design.
</description>
</product>Analizziamo le parti principali. La prima riga è la dichiarazione XML — dice ai parser
che questo è XML 1.0 codificato in UTF-8. Il tag <product> è l'elemento radice (ogni
documento XML ne ha esattamente uno). Le parti id e inStock su quello stesso tag
sono attributi. Tutto ciò che si trova all'interno dei tag di apertura e chiusura è un elemento figlio,
un attributo o contenuto testuale.
Elementi vs Attributi — Una Vera Scelta di Design
Una cosa che mette in difficoltà i nuovi autori XML: puoi rappresentare gli stessi dati come elemento o come attributo. Entrambi questi sono XML valido per lo stesso dato:
<!-- Come attributo -->
<price currency="USD">149.99</price>
<!-- Come elemento figlio -->
<price>
<amount>149.99</amount>
<currency>USD</currency>
</price>La saggezza convenzionale: usa gli attributi per i metadati sull'elemento (identificatori, flag, unità), e usa gli elementi figlio per il contenuto dati effettivo — specialmente se quel contenuto potrebbe diventare complesso, ripetuto o avere bisogno dei propri attributi in futuro. Gli attributi possono contenere solo testo semplice; gli elementi figlio possono contenere qualsiasi struttura XML.
Formato Corretto vs Validità — Due Standard Diversi
XML ha due livelli di correttezza che vengono spesso confusi:
- XML ben formato segue le regole sintattiche di base: un elemento radice, tutti i tag correttamente chiusi, attributi tra virgolette, nessun carattere illegale. Qualsiasi parser XML può verificarlo.
- XML valido è conforme a uno schema specifico — sia un DTD (Document Type Definition) che uno Schema XML (XSD). La verifica della validità richiede sia il documento che lo schema. Si può avere XML ben formato che non è valido rispetto a un particolare schema.
Dove Appare XML nel Mondo Reale
- Web service SOAP. La metà più vecchia del software aziendale gira ancora su SOAP — API bancarie, sistemi ERP, gateway di pagamento. Ogni messaggio SOAP è un documento XML ben definito con Envelope, Header e Body.
- Feed RSS e Atom. Ogni feed di podcast, feed di siti di notizie e iscrizione a canali YouTube è un documento XML. RSS 2.0 e Atom sono entrambi formati basati su XML esistenti dagli inizi degli anni 2000.
- Immagini SVG. Scalable Vector Graphics è XML. Quando apri un file
.svgin un editor di testo, stai leggendo XML. Ecco perché puoi stilizzare gli SVG con CSS e manipolarli con JavaScript. - Documenti Office. Un file
.docx,.xlsxo.pptxè un archivio ZIP contenente file XML. Office Open XML è il modo in cui Microsoft memorizza tutti i formati moderni di documenti Office. - Layout Android. I layout UI di Android sono definiti in file XML. Se hai fatto sviluppo Android, hai scritto molto XML.
- Maven e pom.xml. Il sistema di build Maven di Java usa un file
pom.xmlper definire le dipendenze del progetto e la configurazione di build — familiare a qualsiasi sviluppatore Java.
Analisi di XML in JavaScript — DOMParser
Nel browser, puoi analizzare stringhe XML usando l'API integrata
DOMParser.
Funziona allo stesso modo dell'analisi HTML:
const xmlString = `<?xml version="1.0"?>
<product id="SKU-8821">
<name>Wireless Headphones</name>
<price currency="USD">149.99</price>
<categories>
<category>Electronics</category>
<category>Audio</category>
</categories>
</product>`;
const parser = new DOMParser();
const doc = parser.parseFromString(xmlString, 'application/xml');
// Controlla gli errori di analisi
const parseError = doc.querySelector('parsererror');
if (parseError) {
console.error('XML parse error:', parseError.textContent);
} else {
const name = doc.querySelector('name').textContent;
const currency = doc.querySelector('price').getAttribute('currency');
const categories = [...doc.querySelectorAll('category')].map(el => el.textContent);
console.log(name); // Wireless Headphones
console.log(currency); // USD
console.log(categories); // ['Electronics', 'Audio']
}Analisi di XML in Python — ElementTree
La libreria standard di Python include
xml.etree.ElementTree
— nessun pacchetto di terze parti necessario per l'analisi XML di base:
import xml.etree.ElementTree as ET
xml_string = """<?xml version="1.0"?>
<product id="SKU-8821">
<name>Wireless Headphones</name>
<price currency="USD">149.99</price>
<categories>
<category>Electronics</category>
<category>Audio</category>
</categories>
</product>"""
root = ET.fromstring(xml_string)
name = root.find('name').text
currency = root.find('price').get('currency')
categories = [el.text for el in root.findall('categories/category')]
print(name) # Wireless Headphones
print(currency) # USD
print(categories) # ['Electronics', 'Audio']Le Insidie che Colgono gli Autori XML di Sorpresa
- Codifica delle entità. Cinque caratteri devono essere escaped nel testo XML e nei valori degli attributi:
&→&,<→<,>→>,"→",'→'. Dimenticare di fare l'escape di una e commerciale in un URL rompe l'intero documento. - Namespace. XML con namespace appare come
<soap:Envelope xmlns:soap="...">. Le query senza consapevolezza dei namespace non troveranno gli elementi. Questo è uno dei bug di analisi XML più comuni. - Sensibilità agli spazi bianchi. Gli spazi bianchi tra gli elementi sono tecnicamente significativi in XML (a differenza dell'HTML). La maggior parte dei parser li gestisce in modo ragionevole, ma può causare sorprese quando si confrontano documenti.
- Codifica dei caratteri. La dichiarazione XML deve corrispondere alla codifica effettiva del file. Un file UTF-8 dichiarato come ISO-8859-1 verrà analizzato in modo errato per qualsiasi carattere non-ASCII.
- Nessun tipo array nativo. XML non ha array. Le liste si rappresentano ripetendo gli elementi, il che significa che i parser restituiscono NodeList anziché array JavaScript — converti sempre con
Array.from()o spread.
Strumenti XML Utili da Conoscere
Lavori regolarmente con XML? Questi strumenti ti faranno risparmiare tempo: Formattatore XML per formattare risposte XML minificate, Validatore XML per verificare il formato corretto, XML in JSON per convertire risposte XML in JSON per una gestione più semplice, e XML XPath per testare query XPath su un documento.
Conclusioni
XML è verboso e complesso rispetto a JSON, ma non è una nota a piè di pagina legacy — è la base di SVG, documenti Office, feed RSS, servizi SOAP e interfacce Android. Capire la distinzione elemento/attributo, la differenza tra XML ben formato e valido, e le insidie comuni legate alla codifica delle entità e ai namespace ti sarà utile ogni volta che XML compare nel tuo lavoro. E comparirà.