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:
- l' interfaccia del parser del modello a oggetti del documento o l' interfaccia DOM
- l' API semplice per l' interfaccia del parser XML o l' interfaccia SAX
- l' interfaccia Streaming API per XML o StAX (aggiunta in JDK 6; disponibile separatamente come Jar per JDK 5)
- l' interfaccia XSLT per abilitare le trasformazioni sui dati e le strutture di un documento XML.
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
- ↑ https://www.jcp.org/en/jsr/detail?id=206
- ↑ http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113
link internet
- Descrizione del prodotto JAXP di Oracle
- Programma di esempio che utilizza il parser DOM e il parser SAX Tutorial: XML con Xerces per Java