API Java per l'elaborazione XML

L' API Java per XML Processing , o JAXP , è uno dei Java - XML - API . È un'API standardizzata leggera per la convalida , l' analisi , la generazione e la trasformazione di documenti XML. La rispettiva implementazione (non standardizzata) dell'API è intercambiabile (inseribile). Le quattro interfacce di base sono:

J2SE 1.4 JDK è stata la prima versione di JDK pubblicata con un'implementazione di JAXP 1.1; l'attuale JSE viene fornito con Apache Xerces e una variante adattata di Xalan (per XSLT).

Controllo delle versioni

Versione Java SE versione JAXP inclusa
1.4 1.1
1.5 1.3
1.6 1.4
1.7.0 1.4.5
1.7.40 1.5
1.8 1.6

Interfaccia DOM

L'interfaccia DOM ha una struttura molto semplice. Analizza un intero documento XML e crea una rappresentazione "in memoria" completa del documento. Utilizza le classi ei concetti della specifica che possono essere visualizzati in Document Object Model (DOM) Level 2 Core Specification.

Il parser DOM è chiamato DocumentBuilder perché fornisce una rappresentazione del documento in memoria. Un'istanza della classe javax.xml.parsers.DocumentBuilder viene creata dalla classe Factory javax.xml.parsers.DocumentBuilderFactory . DocumentBuilder crea prima un'istanza org.w3c.dom.Document sotto forma di una struttura ad albero che contiene i nodi nel documento XML. Ogni nodo della struttura ad albero in questa struttura implementa l' interfaccia org.w3c.dom.Node . Esistono molti tipi diversi di nodi della struttura ad albero che rappresentano i rispettivi tipi di dati dal documento XML.

I nodi più importanti sono:

  • Nodi di elementi, possibilmente con attributi
  • Nodi di testo che riflettono il testo trovato tra i tag di inizio e di fine di un elemento del documento

Per un elenco completo dei tipi di nodo, fare riferimento alla documentazione javadoc del pacchetto org.w3c.dom .

Con l'API DOM puoi lavorare "in entrambe le direzioni", ovvero da XML a DOM "in memoria" e da DOM a XML. Non è quindi adatto solo per "analizzare" XML, ma anche per generare XML (flussi o file).

Interfaccia SAX

Il parser SAX, chiamato anche SAXParser, viene creato da javax.xml.parsers.SAXParserFactory . A differenza del parser DOM, il SAXParser non crea una rappresentazione "in memoria" di un documento XML, il che di conseguenza lo rende più veloce e meno impegnativo in termini di consumo di memoria. Al contrario, SAXParser informa il client della struttura del documento XML tramite funzioni di callback , i. In altre parole, vengono eseguiti i metodi dell'istanza DefaultHandler disponibile per il parser.

La classe DefaultHandler si trova nel pacchetto org.xml.sax.helpers . Ciò implementa ContentHandler, ErrorHandler, DTDHandler e l'interfaccia EntityResolver. La maggior parte dei clienti è interessata ai metodi dell'interfaccia ContentHandler.

I metodi ContentHandler, implementati da DefaultHandler, vengono chiamati non appena il parser SAX incontra gli elementi corrispondenti del documento XML. I metodi principali in questa interfaccia sono:

  • i metodi startDocument () e endDocument () , che vengono chiamati sui tag di inizio e fine di un documento XML.
  • i metodi startElement () e endElement () , che vengono chiamati sui tag di inizio e di fine di un elemento del documento.
  • il metodo characters () . Viene chiamato con il contenuto tra i tag di inizio e di fine del rispettivo elemento del documento XML.

Il client offre una sottoclasse di DefaultHandler , che sovrascrive questi metodi ed elabora i dati. Ciò può includere anche l'archiviazione dei dati in un database o la scrittura in un flusso .

Con SAX-API puoi lavorare "solo in una direzione", ovvero da XML "a" Java. È quindi adatto solo per "analizzare" XML. Con SAX non è possibile creare XML (stream o file).

Interfaccia XMLPULL

L' API Streaming per XML (StAX) fa parte di JAXP da JAXP 1.2 e quindi JSE 6 e J2EE 1.4 . Viene utilizzato per leggere i dati XML utilizzando un cosiddetto parser XMLPULL. XMLPULL è simile a SAX, tranne per il fatto che il parser non invia informazioni all'applicazione tramite un meccanismo di eventi ( "PUSH" ), come nel caso di SAX , ma l'applicazione riceve le informazioni successive da sola quando ne ha bisogno (" PULL " ). I parser XMLPULL sono generalmente più efficienti dei parser SAX.

Interfaccia XSLT

L'e x tensible S tylesheet L anguage for T ransformations, abbreviato XSLT , la conversione consente un documento XML ad altre forme di dati.

Convalida XSD

La convalida dei file XSD è supportata da JAXP 1.2. JAXP 1.2 fa parte della piattaforma Java di JSE 6.0 e J2EE 1.4.

Prove individuali

  1. https://www.jcp.org/en/jsr/detail?id=206
  2. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113

link internet