Introduzione all'XML


1. Esercizio: Hello World in Java

Obiettivo di questo esercizio è quello di verificare l'ambiente Eclipse, creando un programma Java che stampi un semplice messaggio utilizzando Eclipse.

Step 1. Aprire Eclipse. Come ambiente di sviluppo utilizzeremo la piattaforma Eclipse.

Step 2. Creare un nuovo progetto Java. Dalla pagina principale selezionare File -> New -> Project... -> Java -> Java Project, dare un nome al progetto e cliccare Finish

Step 3. Creare una classe eseguibile. Dalla pagina principale selezionare File -> New -> Class, dare un nome al package (Eg. it.unipi.di.lai) ed alla classe (Eg. HelloWorld). Selezionare l'opzione di generare il metodo main e cliccare Finish

Step 4. Eseguire la classe.Implementare la logica al metodo main, ad esempio:

public static void main(String [] args) {
	System.out.println("Hello World!");
}

ed eseguirla selezionando Run -> Run As... -> Java application. Verificare che nel riquadro Console compaia la scritta Hello World!

Soluzione

2. Esercizio: XML con DOM

Scrivere un'applicazione Java che costruisca la richiesta per l'operazione GetCategoryInfo vista nella precedente esercitazione:

<GetCategoryInfoRequest xmlns="urn:ebay:apis:eBLBaseComponents">
  <CategoryID>-1</CategoryID>
  <IncludeSelector>ChildCategories</IncludeSelector>
</GetCategoryInfoRequest>
		

La libreria che gestisce il processamento dell'XML è la JAXP ( Java API for XML Processing ). Come descritto nella documentazione questa API fornisce le classi che implementano la logica di parsing DOM e SAX. In questo esercizio utilizzeremo il parser DOM per costruire il messaggio XML richiesto.

Step 1. Creare un DOM Document. Seguendo le indicazioni della documentazione, utilizzare le classi DocumentBuilderFactory e DocumentBuilder per creare un'istanza di Document vuota

Step 2. Popolare il Document di elementi XML. Utilizzando i metodi del Document appena creato, creare gli elementi XML necessari e appenderli al documento.

Step 3. Trasformare il Document in testo. Utilizzare le API di trasformazione javax.xml.transformation per convertire il Dom Document creato in un testo e stamparlo a video.

[Suggerimento] Suggerimento

Viene fornita una libreria di utilità contenente alcune classi che utilizzeremo durante il corso. Una volta scaricata e aggiunta al buildpath del progetto (project > properties > Java build path > Add external jar...), potete utilizzare la classe DOMUtils che con il metodo serialize vi aiuterà nella trasformazione del DOM in Stringa

Soluzione

3.Esercizio: Validazione XSD in Java

Creare un simulatore del servizio ShoppingService che esegua la validazione del messaggio in ingresso rispetto allo Schema XML dello ShoppingService di eBay, verifica che la richiesta è una GetCategoryInfo e stampa l'IdCategoria contenuto nella richiesta. Una volta implementato il simulatore, utilizzare il codice dell'esercizio precedente per invocarlo.

Step 1. Implementare il simulatore del servizio. Creare la classe ShoppingServiceSimulator che implementa il metodo public void invoke(String request) che esegue il parsing (rif: lucido 5 della lezione su Parsing XML) e stampa il messaggio ricevuto. Modificare il programma dell'esercizio precedente affichè, una volta serializzata la richiesta GetCategoryInfo, crei un'istanza del simulatore e richiami il metodo invoke. Eseguire il client e verificare che il servizio stampi il messaggio ricevuto.

[Suggerimento] Suggerimento

Avrete bisogno di convertire stringhe in stream e viceversa. Per farlo è possibile utilizzare il seguente codice:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
domUtils.serialize(doc, baos);
validator.invoke(baos.toString());

Document doc = parser.parse(new ByteArrayInputStream(request.getBytes()));

Step 2. Implementare la validazione dei messaggi. Dopo aver affettuato il parsing del messaggio ricevuto, effettuare anche la validazione del documento ottenuto, Seguendo le modalità viste a lezione (rif: lucido 6 della lezione su Parsing XML), eseguire la validazione del documento rispetto allo Schema XML dello ShoppingService di eBay. Eseguire il client e verificare che il messaggio venga validato correttamente, inserendo degli errori nella richiesta come riprova.

Step 3. Completare la logica del simulatore. Aggiungere la seguente logica:

  1. Se la richiesta non è una GetCategoryInfo ritornare una stringa di errore

  2. Altrimenti navigare il DOM costruito dal parser, recuperare il valore dell'elemento IdCategory e stamparlo a video

Soluzione: simulazione client

Soluzione: simulazione server

Footer BGFooter BG
Tito Flagella - © 2007-2015