Άσκηση 8.5
Επανάληψη της άσκησης 8.4
χρησιμοποιώντας το SAX
Θέση αρχείων = /ExerciseCode/C8/EightFive/
Στην
άσκηση αυτή θα
επαναλάβουμε
την
προηγούμενη άσκηση,
αλλά αυτή τη
φορά θα
γράψετε λίγο
κώδικα.
Ο
σαρωτής που
χρησιμοποιείται
εδώ
είναι ο Apache xerces2 XML parser.
Μπορείτε να
τον
κατεβάσετε
από τo Apache Foundadtion.
Πριν
ξεκινήσετε
θα πρέπει να
δηλώσετε την
βάση
δεδομένων της
άσκησης στα Windows.
Κάντε τα
παρακάτω
βήματα.
- Πατήστε Start|Settings|Control
Panel
- Δείτε
την εικόνα
που
καθορίζει
σύνδεση ODBC στο
control panel. Αυτή είναι
ένα απλό σύστημα
ονομασίας
που
επιτρέπει τα
προγράμματα Java
να
επικοινωνούν
με μια βάση
δεδομένων
της Microsoft. Πατήστε 2
φορές την
εικόνα.
- Πατήστε το κουμπί add
στο
παράθυρο που
εμφανίζεται.
- Στο
επόμενο
παράθυρο
πατήστε δύο
φορές τη γραμμή
που αρχίζει
με Microsoft Access Driver....
Ένα νέο
παράθυρο
πρέπει να
εμφανιστεί.
- Στο
νέο παράθυρο
εισάγεται
το
string " DOMbooks " στο
πεδίο Data Source Name.
Κατόπιν
πατήστε το
κουμπί Select.
- Πάτε
στον φάκελο
που περιέχει
την
βάση
δεδομένων. Θα
την βρείτε
στον
κατάλογο
/ExerciseCode/C8/ExEightFour/.
Θα
καταλάβετε
ότι έχετε
φτάσει
το όνομα του
καταλόγου
όταν αυτό (BookDatabase.mdb)
εμφανιστεί
στην πιο
αριστερή
περιοχή
κειμένου.
Επιλέξτε τον
φάκελο και
πατήστε OK.
- Κλείστε
όλα τα
παράθυρα που
ανοίξατε
πατώντας OK σε
όλα.
Τώρα
η βάση
δεδομένων
μπορεί να
αναφερθεί με
το όνομα DOMbooks μέσα στο πρόγραμμα Java.
Η
άσκηση
περιλαμβάνει
ορισμένες
κλάσεις και
αρχεία:
- BookDetails
είναι η κλάση
που
περιγράφει
βιβλία. Απλώς
περιέχει
μεθόδους
για τον
καθορισμό
και την
παραλαβή
δεδομένων
καθώς και μια
μέθοδο toString.
- Η
κλάση CatalogueSAXSolution
περιέχει τη
λύση της
άσκησης. Ο
κώδικας
χρησιμοποιεί
το SAX API και
επεξεργάζεται
το αρχείο XML
που περιέχει
τις
λεπτομέρειες
των βιβλίων.
Κάθε μέθοδο
μέσα στην κλάση
θα
εκτελεστεί
όταν
συγκεκριμένα
γεγονότα
παρουσιαστούν
κατά τη
διάρκεια της
επεξεργασίας
ενός αρχείου,
για
παράδειγμα η
μέθοδο endElement θα
εκτελεστεί
όταν ένα
στοιχείο
τέλους, όπως
</PRICE>,
συναντηθεί.
- Η
κλάση CatalogueSAX
περιέχει τον
κώδικα που
πρέπει να
αλλάξετε.
- Το
αρχείο catalogue.txt
περιέχει το
κείμενο XML που
θα
επεξεργαστεί.
- Το
αρχείο Books.txt
περιέχει το DTD
για το
αρχείο catalogue.txt.
Το
κείμενο XML που
θα υποστεί
επεξεργασία
(catalogue.txt) είναι
<BOOKLIST>
<BOOK>
<TITLE>The Endless Path</TITLE>
<AUTHORS>Jones</AUTHORS>
<PRICE AMOUNTCURRENCY = "Pounds">200</PRICE>
<PUBLISHER>Pearson</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>My Story</TITLE>
<AUTHORS>Roberts</AUTHORS>
<PRICE AMOUNTCURRENCY = "SW Francs">500</PRICE>
<PUBLISHER>McMillan</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>XML for Beginners</TITLE>
<ΑUTHORS>Ince</AUTHORS>
<PRICE AMOUNTCURRENCY = "Dollars" DISCOUNT= "5">300</PRICE>
<PUBLISHER>Pearson</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>Java and Nirvana</TITLE>
<AUTHORS>Rowlands</AUTHORS>
<PRICE AMOUNTCURRENCY = "Pounds"> 400 </PRICE>
<PUBLISHER>Wiley</PUBLISHER>
</BOOK>
</BOOKLIST>
Πρέπει
να φτιάξετε
μια σχεσιακή
βάση
δεδομένων από
την
επεξεργασία
του
προηγούμενου
αρχείου.
Ακολουθήστε
τα παρακάτω
βήματα:
- Εκτελέστε
τη λύση. Ο
κώδικας
προσπελαύνει
μια σχεσιακή
βάση
δεδομένων MS Access
και έπειτα
διαβάζει το
αρχείο XML. Κάθε
φορά που
συναντά στο
κείμενο
XML ένα
στοιχείο
συναντάτε
εκτελεί
κάποια
επεξεργασία.
Δημιουργεί
ένα
αντικείμενο
BookDetails και
τελικά
εισάγει τα
περιεχόμενα
του
αντικειμένου
στη βάση
δεδομένων με
την εκτέλεση
μιας δήλωσης
INSERT
SQL.
Παρουσιάζει
τη μορφή κάθε
δήλωσης SQL που
ενημερώνει τη
βάση
δεδομένων. Όταν
η
επεξεργασία
τελειώσει,
παρουσιάζει
τα
περιεχόμενα
της
βάσης, και μετά
τη διαγράφει
ώστε να είναι
έτοιμη για την
επόμενη
εκτέλεση.
- Δείτε
τον κώδικα
μέσα στο CatalogueSAX
και
κατανοήστε
τι συμβαίνει.
- Ο
κώδικας μέσα
στον CatalogueSAX όπως
είναι δεν
ανανεώνει
τις
σχετικές με
την τιμή
ιδιότητες AMOUNTCURRENCY
και DISCOUNT.
Εισάγετε
τον κώδικα
για αυτό.
- Εκτελέστε
τον κώδικα μέσα στο CatalogueSAX.