Apache Xerces - Panoramica del parser DOM

Il Document Object Model è una raccomandazione ufficiale del World Wide Web Consortium (W3C). Definisce un'interfaccia che consente ai programmi di accedere e aggiornare lo stile, la struttura e il contenuto dei documenti XML. I parser XML che supportano il DOM, implementano tale interfaccia.

Quando usare?

Dovresti usare un parser DOM quando:

  • Hai bisogno di sapere molto sulla struttura di un documento.

  • È necessario spostare parti del documento (ad esempio, potresti voler ordinare determinati elementi).

  • È necessario utilizzare le informazioni nel documento più di una volta.

Cosa ottieni?

Quando analizzi un documento XML con un parser DOM, ottieni una struttura ad albero che contiene tutti gli elementi del tuo documento. Il DOM fornisce una varietà di funzioni che puoi usare per esaminare il contenuto e la struttura del documento.

Vantaggi

Il DOM è un'interfaccia comune per manipolare le strutture dei documenti. Uno dei suoi obiettivi di progettazione è che il codice Java scritto per un parser conforme a DOM debba essere eseguito su qualsiasi altro parser conforme a DOM senza modifiche.

Interfacce DOM

Il DOM definisce diverse interfacce Java. Ecco le interfacce più comuni:

  • Node - Il tipo di dati di base del DOM.

  • Element - La stragrande maggioranza degli oggetti che dovrai affrontare sono elementi.

  • Attr - Rappresenta un attributo di un elemento.

  • Text - Il contenuto effettivo di un elemento o Attr.

  • Document- Rappresenta l'intero documento XML. Un oggetto Document viene spesso definito albero DOM.

Metodi DOM comuni

Quando lavori con il DOM, ci sono diversi metodi che vengono usati spesso:

  • Document.getDocumentElement() - Restituisce l'elemento radice del documento.

  • Node.getFirstChild() - Restituisce il primo figlio di un dato nodo.

  • Node.getLastChild() - Restituisce l'ultimo figlio di un dato nodo.

  • Node.getNextSibling() - Questi metodi restituiscono il fratello successivo di un dato nodo.

  • Node.getPreviousSibling() - Questi metodi restituiscono il fratello precedente di un dato nodo.

  • Node.getAttribute(attrName) - Per un dato nodo, restituisce l'attributo con il nome richiesto.