1. seminář - Práce s XML

TEACHINGJJ2

Materiály k semináři

Úkoly

Úkol odevzdejte emailem do 2. 3. 2022 17:00 CET na email roman.vyjidacek@upol.cz s předmětem JJ2_01.

Uvažujme následující typ XML souboru:

    <?xml version="1.0" ?>
    <receipt total="1642">
        <name>ACME corp.</name>
        <itin>CZ12345678</itin>
        <items>
            <item amount="50" unitPrice="24">Nitroglycerin</item>
            <item amount="4" unitPrice="100">Jet Propelled Pogo Stick</item>
            <item amount="1" unitPrice="42">Hen Grenade</item>
        </items>
    </receipt>

Navrhněte třídu Receipt, do které bude možné uložit všechna data z daného XML souboru, přečíst hodnoty a vypsat je.

Uvažujme rozhraní:


    public interface ReceiptReaderWriter {
         /**
          * Nacte ze streamu XML soubor a dle nej vytvori prislusny objekt reprezentujici uctenku
          */
         public Receipt loadReceipt(InputStream input) throws Exception;
    
         /**
          * Ulozi do prislusneho streamu XML soubor predstavujici danou uctenku
          */
         public void storeReceipt(OutputStream output, Receipt receipt) throws Exception;
    }

Implementujte příslušné rozhraní jako třídy:
  • DOMReceiptReaderWriter -- aby využívalo DOM API
  • SAXReceiptReaderWriter -- aby využívalo SAX API (pokus o zápis v tomto případě skončí vždy výjimkou)
  • StAXReceiptReaderWriter -- aby využívalo StAX API