Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΦιλομήλα Δεσποτόπουλος Τροποποιήθηκε πριν 8 χρόνια
1
ΕΡΓΑΣΤΗΡΙΟ – No.7 Ηλεκτρονικού Εμπορίου Ε-Επιχειρείν Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Java APIs για Web Services: ΧΜL και JSP
2
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 The Document Object Model (DOM) APIs Μοντέλο Αντικειμένων Εγγράφου Το πρότυπο DOM μετατρέπει ένα έγγραφο XML σε μια συλλογή αντικειμένων στο πρόγραμμά μας. Μπορούμε έπειτα να χειριστούμε το μοντέλο αντικειμένου με κάθε τρόπο που έχει νόημα. Αυτός ο μηχανισμός είναι επίσης γνωστός ως πρωτόκολλο τυχαίας «προσπέλασης», επειδή μπορούμε να επισκεφτούμε οποιοδήποτε μέρος των δεδομένων, σε οποιαδήποτε στιγμή. Μπορούμε έπειτα να τροποποιήσουμε τα δεδομένα, να τα αφαιρέσουμε, ή να παρεμβάλουμε νέα δεδομένα.
3
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 DOM APIs Χρησιμοποιούμε τη κλάση javax.xml.parsers.DocumentBuilderFactory για τη δημιουργία ενός DocumentBuilder instance, το οποίο το χρησιμοποιούμε για τη παραγωγή ενός Document (ενός DOM) που ακολουθεί τη προδιαγραφή του DOM. Ο builder που παίρνουμε, προσδιορίζεται από την ιδιότητα System, που επιλέγει τη συγκεκριμένη υλοποίηση του factory που χρησιμοποιήθηκε. Μπορούμε ακόμη να χρησιμοποιήσουμε τη μέθοδο newDocument() του DocumentBuilder, για τη δημιουργία ενός άδειου Εγγράφου που υλοποιεί το interface του org.w3c.dom.Document. Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε μία από τις μεθόδους parse του builder, για τη κατασκευή ενός Εγγράφου από υπάρχοντα δεδομένα XML. Το αποτέλεσμα είναι ένα δένδρο DOM, όπως αυτό του διαγράμματος.
4
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Τα πακέτα DOM org.w3c.dom Προσδιορίζει τα DOM προγραμματιστικά interfaces για XML (και, προαιρετικά για HTML) έγγραφα, όπως προσδιορίστηκε από τον οργανισμό W3C. javax.xml.parsers Ορίζει τη κλάση DocumentBuilderFactory και τη κλάση DocumentBuilder, που επιστρέφουν ένα αντικείμενο που υλοποιεί το W3C Document interface. Επίσης το πακέτο αυτό ορίζει τη κλάση ParserConfigurationException για αναφορά λαθών.
5
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho01.java Σκελετός εφαρμογής public class DomEcho01 { public static void main(String argv[]) { if (argv.length != 1) { System.err.println( "Usage: java DomEcho filename"); System.exit(1); } }// main }// DomEcho
6
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho01.java Imports import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import java.io.File; import java.io.IOException; import org.w3c.dom.Document; import org.w3c.dom.DOMException;
7
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho01.java Δήλωση DOM static Document document; Χειρισμός λαθών (όμοιος με SAX) try { } catch (SAXParseException spe) { // Error generated by the parser System.out.println("\n** Parsing error" + ", line " + spe.getLineNumber() + ", uri " + spe.getSystemId()); System.out.println(" " + spe.getMessage() ); // Use the contained exception, if any Exception x = spe; if (spe.getException() != null) x = spe.getException(); x.printStackTrace(); } catch (SAXException sxe) { // Error generated during parsing Exception x = sxe; if (sxe.getException() != null) x = sxe.getException(); x.printStackTrace(); } catch (ParserConfigurationException pce) { // Parser with specified options can't be built pce.printStackTrace(); } catch (IOException ioe) { // I/O error ioe.printStackTrace(); } }// main
8
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho01.java Δημιουργία στιγμιότυπου του factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); Απόκτηση parser και ανάλυση αρχείου try { DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse( new File(argv[0]) ); } catch (SAXParseException spe) {
9
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho02.java Εμφάνιση μιας ιεραρχίας DOM Πρόσθεση νέων import // GUI components and layouts import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.JSplitPane; import javax.swing.JEditorPane; // GUI support classes import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.WindowEvent; import java.awt.event.WindowAdapter; // For creating borders import javax.swing.border.EmptyBorder; import javax.swing.border.BevelBorder; import javax.swing.border.CompoundBorder;
10
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho02.java Δημιουργία GUI Framework public class DomEcho02 extends JPanel static final int windowHeight = 460; static final int leftWidth = 300; static final int rightWidth = 340; static final int windowWidth = leftWidth + rightWidth; … document = builder.parse( new File(argv[0]) ); makeFrame(); …
11
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho02.java makeFrame() public static void makeFrame() { // Set up a GUI framework JFrame frame = new JFrame("DOM Echo"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); // Set up the tree, the views, and display it all final DomEcho02 echoPanel = new DomEcho02(); frame.getContentPane().add("Center", echoPanel ); frame.pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int w = windowWidth + 10; int h = windowHeight + 10; frame.setLocation(screenSize.width/3 - w/2, screenSize.height/2 - h/2); frame.setSize(w, h); frame.setVisible(true) } // makeFrame
12
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho02.java constructor, border και JEditPane public DomEcho02() { // Make a nice border EmptyBorder eb = new EmptyBorder(5,5,5,5); BevelBorder bb = new BevelBorder(BevelBorder.LOWERED); CompoundBorder cb = new CompoundBorder(eb,bb); this.setBorder(new CompoundBorder(cb,eb)); } // Constructor // Set up the tree JTree tree = new JTree(); // Build left-side view JScrollPane treeView = new JScrollPane(tree); treeView.setPreferredSize( new Dimension( leftWidth, windowHeight )); // Build right-side view JEditorPane htmlPane = new JEditorPane("text/html",""); htmlPane.setEditable(false); JScrollPane htmlView = new JScrollPane(htmlPane); htmlView.setPreferredSize( new Dimension( rightWidth, windowHeight ));
13
Δρ. Χρήστος Κ. Γεωργιάδης - 2003 Παράδειγμα: DomEcho02.java split-pane view // Build split-pane view JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, treeView, htmlView ); splitPane.setContinuousLayout( true ); splitPane.setDividerLocation( leftWidth ); splitPane.setPreferredSize( new Dimension( windowWidth + 10, windowHeight+10 )); // Add GUI components this.setLayout(new BorderLayout()); this.add("Center", splitPane );
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.