Σπίτι Προσωπικά Οικονομικά Δημιουργία προσαρμοσμένου κώδικα με Java API για δέσμευση XML (JAXB) - dummies

Δημιουργία προσαρμοσμένου κώδικα με Java API για δέσμευση XML (JAXB) - dummies

Πίνακας περιεχομένων:

Βίντεο: Exploring JavaScript and the Web Audio API by Sam Green and Hugh Zabriskie 2024

Βίντεο: Exploring JavaScript and the Web Audio API by Sam Green and Hugh Zabriskie 2024
Anonim

Μπορείτε να δημιουργήσετε προσαρμοσμένο κώδικα με JAXB Java API για δέσμευση XML . Με το JAXB, λαμβάνετε ένα έγγραφο XML και δημιουργείτε ένα αρχείο κατηγορίας Java που είναι ιδανικό για την επεξεργασία του εγγράφου. Όταν οι ανάγκες σας αλλάξουν και η τάξη δεν κάνει πλέον αυτό που θέλετε να κάνει, απλά δημιουργείτε μια νέα υποκατηγορία. Όταν γράφετε κώδικα SAX ή DOM, δημιουργείτε ένα πρόγραμμα επεξεργασίας XML. Το πρόγραμμά σας διαβάζει ένα έγγραφο και χρησιμοποιεί το έγγραφο για να κάνει χρήσιμη εργασία - ξεκινώντας με κάτι ακίνδυνο όπως το δημόσιο κενό startElement ή κόμβος. getNodeName (). Είτε έτσι είτε αλλιώς, το πρόγραμμά σας δεν κάνει υποθέσεις σχετικά με το τι υπάρχει μέσα στο έγγραφο. Το έγγραφο έχει ένα στοιχείο ρίζας, μερικά στοιχεία παιδιού, και αυτό είναι όλο. Οποιεσδήποτε ειδικές υποθέσεις που κάνετε σχετικά με αυτό το έγγραφο ουσιαστικά περιορίζουν τη χρησιμότητα του κώδικα.

Ευέλικτος κώδικας σε σχέση με τον προσαρμοσμένο κώδικα

Σκεφτείτε τον κώδικα στις Καταχωρήσεις 1 και 2. Η λίστα 1, σαρώνει πέντε κόμβους σε ένα δέντρο εγγράφων. Αυτοί οι πέντε κόμβοι πρέπει να διευθετηθούν με κάποιο τρόπο, αλλιώς το πρόγραμμα καταρρέει. (Η λίστα θέλει ένα σχόλιο και έναν κόμβο ρίζας, με τουλάχιστον δύο παιδιά απευθείας κάτω από τον κόμβο ρίζας.)

Λίστα 1: Εμφάνιση μερικών κόμβων

org εισαγωγής. w3c. dom. Κόμβος;

εισαγωγή org. w3c. dom. NamedNodeMap;

κατηγορία MyTreeTraverser

{

MyTreeTraverser (κόμβος κόμβου)

{

Σύστημα. έξω. println (κόμβος getNodeName ());

κόμβος = κόμβος. getFirstChild ();

Σύστημα. έξω. println (κόμβος getNodeName ());

κόμβος = κόμβος. getNextSibling ();

Σύστημα. έξω. println (κόμβος getNodeName ());

κόμβος = κόμβος. getFirstChild ();

Σύστημα. έξω. println (κόμβος getNodeName ());

κόμβος = κόμβος. getNextSibling ();

Σύστημα. έξω. println (κόμβος getNodeName ());

}

}

Λίστα 2: Μετακίνηση του δέντρου DOM

Εισαγωγή org. w3c. dom. Κόμβος;

εισαγωγή org. w3c. dom. NamedNodeMap;

κατηγορία MyTreeTraverser

{

κόμβος κόμβου;

MyTreeTraverser (κόμβος κόμβου)

{

αυτό. κόμβος = κόμβος;

displayName ();

displayValue ();

αν (κόμβος getNodeType () == Κόμβος ELEMENT_NODE) ​​

displayAttributes ();

Σύστημα. έξω. println ();

Εμφάνιση παιδιών ();

}

κενό displayName ()

{

Σύστημα. έξω. Όνομα εκτύπωσης: ");

Σύστημα. έξω. println (κόμβος getNodeName ());

}

άκυρη εμφάνισηValue ()

{

String nodeValue = κόμβος. getNodeValue ();

εάν (nodeValue! = Null)

nodeValue = nodeValue. τακτοποίηση();

Σύστημα. έξω. εκτύπωση ("Αξία:");

Σύστημα. έξω. println (nodeValue);

}

άκυρη εμφάνισηAttributes ()

{

NamedNodeMap attribs = κόμβος. getAttributes ();

για το (int i = 0; i

{ Σύστημα. έξω. println ();

Σύστημα. έξω. εκτύπωση ("Χαρακτηριστικό:");

Σύστημα. έξω. εκτύπωση (αποδίδεται στοιχείο (i). getNodeName ());

Σύστημα. έξω. εκτύπωση ("=");

Σύστημα. έξω. println (αποδίδει στοιχείο (i). getNodeValue ());

}

}

άκυρη εμφάνισηΠαιχνίδια ()

{

κόμβος παιδί = κόμβος. getFirstChild ();

ενώ (παιδί! = Null)

{

νέο MyTreeTraverser (παιδί);

παιδί = παιδί. getNextSibling ();

}

}

}

Ο κώδικας στην Λίστα 2 είναι πολύ πιο γενικός. Αυτός ο κώδικας ελέγχει τη δομή του εγγράφου καθώς εκτελείται. Όταν ο κώδικας βρει έναν παιδικό κόμβο, σαρώει το παιδί και ψάχνει τα εγγόνια. Εάν δεν υπάρχουν εγγόνια, ο κώδικας αναζητά αδελφούς και αδελφές. Ο κώδικας μπορεί να χειριστεί οποιαδήποτε δέντρο εγγράφων - είτε έχει έναν κόμβο είτε χίλιους κόμβους.

Έτσι, η Λίστα 2 είναι πιο ευέλικτη από την Καταχώρηση 1. Ωστόσο, αυτή η ευελιξία έρχεται με μειονεκτήματα - συμπεριλαμβανομένης της δυνατότητας πολύ υψηλών γενικών εξόδων. Ο κώδικας στην Λίστα 2 πρέπει να αναλύσει ολόκληρο το έγγραφο XML και στη συνέχεια να παρουσιάσει μια παράσταση του δέντρου του εγγράφου στη μνήμη του υπολογιστή. Εάν το έγγραφο είναι πολύ μεγάλο, τότε η αναπαράσταση είναι μεγάλη: Η μνήμη διογκώνεται με όλα αυτά τα προσωρινά δεδομένα και ο κώδικας στην Λίστα 2 επιβραδύνεται σε μια ανίχνευση.

Τα οφέλη της προσαρμογής

Φανταστείτε ότι προσπαθείτε να οδηγήσετε στο Faneuil Hall στη Βοστόνη της Μασαχουσέτης. Δεν έχει σημασία από πού ξεκινάτε. το ταξίδι θα είναι πάντα συγκεχυμένο και δύσκολο. Τέλος πάντων, πρέπει να σχεδιάσετε τη διαδρομή σας. Μπορείτε να χαθείτε στο κοντινό Revere ή Cambridge ή στο κέντρο της Βοστώνης. Ανάλογα με τους πόρους σας, έχετε δύο επιλογές:

Μπορείτε να σταματήσετε σε ένα βενζινάδικο και να αγοράσετε ένα χάρτη. Εάν το κάνετε, τότε δεν μπορείτε ποτέ να φτάσετε στο Faneuil Hall. Μετά από όλα, θα πρέπει να βρείτε το σημείο όπου βρίσκεστε στο χάρτη, να αναζητήσετε εναλλακτικές διαδρομές, να επιλέξετε μια διαδρομή και, στη συνέχεια (ο ουρανός να σας βοηθήσει) προσπαθήστε να ακολουθήσετε τη διαδρομή χωρίς να χάσετε ξανά.

Μπορείτε να ενημερώσετε το ακριβό σύστημα ομιλίας GPS που θέλετε να φτάσετε στο Faneuil Hall. Το σύστημα θα σχεδιάσει μια προσαρμοσμένη διαδρομή και θα σας καθοδηγήσει, γυρίστε από τη σειρά του, από ό, τι άθλια τόπο βρίσκεστε στην βέλτιστη διαδρομή που οδηγεί από εκεί στην αίθουσα Faneuil. Η διαδρομή είναι τόσο προσαρμοσμένη ώστε η φωνή GPS λέει (για παράδειγμα), "Δεν υπάρχει κανένα σημάδι σε αυτή τη διασταύρωση, αλλά στρίψτε αριστερά ούτως ή άλλως. »Αργότερα, η φωνή λέει« Υπάρχουν δύο σημεία σε αυτή τη διασταύρωση, και τα σημάδια αντιβαίνουν ο ένας στον άλλο. Αλλά στρίψτε δεξιά ούτως ή άλλως. "

  • Η χρήση του χάρτη χαρτών απαιτεί περισσότερη δουλειά (περισσότερο χρόνο, προσπάθεια, επιδεξιότητα και υπομονή) από τη χρήση του ομιλούμενου GPS. Γιατί; Επειδή ο χάρτης χαρτιού δεν είναι προσαρμοσμένος στις συγκεκριμένες ανάγκες σας. στην πραγματικότητα, λέει, "Εδώ είναι ολόκληρη η μητροπολιτική περιοχή της Βοστόνης. Η αίθουσα Faneuil είναι κάπου εκεί.
  • Μπορείτε

να καταλάβετε τι πρέπει να κάνετε στη συνέχεια. " Ένα προσαρμοσμένο σύστημα είναι (όπως ίσως αναμένεται) πιο εύκολο από αυτό που δεν είναι προσαρμοσμένο στην άμεση σας κατάσταση. Έτσι, ο κώδικας επεξεργασίας XML της Καταχώρισης 2 κάνει ένα τεράστιο δέντρο DOM που περιέχει πόρους στον χώρο μνήμης του υπολογιστή σας ("Εδώ είναι το δέντρο - εσείς

καταλάβετε τι πρέπει να κάνετε στη συνέχεια …") επειδή ο κώδικας δεν είναι " t προσαρμοσμένο.Ο κώδικας λειτουργεί για κάθε παλιό έγγραφο - όχι μόνο αυτό που έχετε στη διάθεσή σας - και πάντα βάζει τα χρήματα για να το κάνει. Η ουσία του JAXB Η ιδέα πίσω από το JAXB είναι να δημιουργήσει προσαρμοσμένη τάξη για να ικανοποιήσει τις τρέχουσες ανάγκες σας. Παίρνετε την περιγραφή ενός εγγράφου XML, εκτελέστε το μέσω ενός ειδικού προγράμματος που ονομάζεται

μεταγλωττιστής σχήματος

και αποκτήστε μια ολοκαίνουργια κλάση που ονομάζεται δημιουργηθείσα κλάση . Αυτή η κατηγορία που δημιουργείται είναι εξορθολογισμένη ώστε να λειτουργεί με συγκεκριμένα έγγραφα XML.

Για παράδειγμα, εάν τα έγγραφα XML σας έχουν στοιχεία που ονομάζονται Σύνολο, τότε η δημιουργηθείσα κλάση μπορεί να έχει ορίσει Ολική και getTotal μεθόδους. Εάν το στοιχείο ενός εγγράφου έχει ένα χαρακτηριστικό fullName, τότε η δημιουργηθείσα κλάση μπορεί να έχει τις μεθόδους setFullName και getFullName. (Βλ. Εικόνα 1).

Η σύνδεση μεταξύ ενός μέρους ενός εγγράφου XML και ενός τμήματος μιας κλάσης Java ονομάζεται δεσμευτική

. Με όλες αυτές τις δεσμεύσεις, μια παρουσία της κλάσης αντιπροσωπεύει ένα ενιαίο έγγραφο XML.

Εικόνα 1:

Ένα αντικείμενο αντιπροσωπεύει ένα έγγραφο.

Πώς συνδέετε ένα αντικείμενο με ένα έγγραφο XML; Λοιπόν, η παραγόμενη κλάση έχει μεθόδους που ονομάζονται unmarshal και marshal. (Βλ. Εικόνα 2). Η μέθοδος unmarshal διαβάζει ένα αρχείο XML. Η μέθοδος παίρνει τιμές από το έγγραφο XML και εκχωρεί αυτές τις τιμές σε μεταβλητές στο αντικείμενο Java.

  • Η μέθοδος marshal γράφει ένα αρχείο XML. Η μέθοδος παίρνει τιμές από το αντικείμενο Java και χρησιμοποιεί αυτές τις τιμές για να δημιουργήσει το έγγραφο XML.
Με μεθόδους όπως αυτές, μπορείτε να ανακτήσετε και να τροποποιήσετε τα δεδομένα σε ένα έγγραφο XML.
  • Εικόνα 2:

Τιμές ανάγνωσης και γραφής.

Δημιουργία προσαρμοσμένου κώδικα με Java API για δέσμευση XML (JAXB) - dummies

Η επιλογή των συντακτών

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Microsoft SharePoint Workspace είναι ο καλλιτέχνης παλαιότερα γνωστός ως Microsoft Office Groove desktop εφαρμογή προσαρμοσμένη για άτομα που θέλουν να συνεργάζονται σε έγγραφα online και offline. Προσφέρεται μαζί με το Office 2010 και παρέχει μια διεπαφή χρήστη παρόμοια με την Εξερεύνηση των Windows για προβολή και επεξεργασία αρχείων και λιστών από μια τοποθεσία του SharePoint. SharePoint Workspace ...

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Το Site δημοσίευσης του sharePoint 2010 παρέχει μια πλούσια εμπειρία επεξεργασίας καθιστά εύκολο για ένα μη τεχνικό πρόσωπο να δημιουργήσει ιστοσελίδες. Η προσθήκη του περιεχομένου σας στη σελίδα είναι γρήγορη. Το SharePoint παρέχει πολλά είδη δοχείων περιεχομένου που μπορείτε να χρησιμοποιήσετε κατά τη δημιουργία της σελίδας σας, συμπεριλαμβανομένων των πλαισίων κειμένου μιας γραμμής για την εισαγωγή μιας απλής γραμμής κειμένου ...

Για ιστότοπους SharePoint Online - dummies

Για ιστότοπους SharePoint Online - dummies

Μπορείτε να δημιουργήσετε και να αναπτύξετε τρεις κύριους τύπους σελίδων του SharePoint όχι λιγότερο!) - το καθένα με ξεχωριστή λειτουργία: περιεχόμενο, τμήματα Web και εκδόσεις σελίδων. Σελίδα περιεχομένου: Επίσης γνωστή ως σελίδα wiki, αυτό είναι το μαχαίρι ελβετικού στρατού των σελίδων του SharePoint. Μια σελίδα περιεχομένου παρέχει όχι μόνο μια θέση ...

Η επιλογή των συντακτών

Τι είναι ένας χάρτης Java; - ανδρείκελα

Τι είναι ένας χάρτης Java; - ανδρείκελα

Πίνακες και εξειδικευμένες λίστες καθιστούν δυνατή την εκτέλεση μιας εκπληκτικής σειράς εργασιών με την Java. Ωστόσο, υπάρχουν περιπτώσεις όπου μια εφαρμογή Java χρειάζεται κάτι που είναι περισσότερο παρόμοιο με μια βάση δεδομένων, χωρίς να έχει όντως όλες τις αποσκευές της βάσης δεδομένων (όπως η αγορά μιας ξεχωριστής εφαρμογής). Για παράδειγμα, μπορεί να θέλετε να είστε σε θέση ...

Λίγα περίεργα πράγματα για το Java Math - dummies

Λίγα περίεργα πράγματα για το Java Math - dummies

- να έχουν ορισμένους περιορισμούς όταν πρόκειται για υπολογισμό μαθηματικών. Αυτοί οι περιορισμοί είναι συνήθως ασήμαντοι, αλλά μερικές φορές γλιστρίζουν και σας δαγκώνουν. Εδώ είναι τα πράγματα που πρέπει να προσέξετε όταν κάνετε μαθηματικά στην Java. Η

Η επιλογή των συντακτών

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Από τα τρία νέα φίλτρα Blur στο Photoshop CS6, θα έχετε επίσης πρόσβαση σε δύο σχετικούς πίνακες ελέγχου, Εργαλεία θόλωσης και Εφέ θόλωσης, τα οποία περιέχουν τις επιλογές σας. Και τα τρία φίλτρα σας επιτρέπουν να δημιουργήσετε ειδικά εφέ. Blur πεδίου: Δημιουργεί μια συνολική θόλωση στην εικόνα σας. Με την προσθήκη πρόσθετων σημείων ελέγχου ή καρφίτσες, ...

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

, αυτόνομο πλαίσιο Μάσκες στο Photoshop CS6 προς όφελος του πίνακα Ιδιότητες, ο οποίος περιλαμβάνει τώρα τις δυνατότητες των πλαισίων Μάσκες και Προσαρμογές. Δεν υπάρχουν όμως ανησυχίες. Κανένα από τα χαρακτηριστικά που παρείχε προηγουμένως ο πίνακας "Μάσκες" χάθηκε. Ο νέος πίνακας Ιδιότητες σάς δίνει τη δυνατότητα να προσθέσετε, να επεξεργαστείτε και να διαχειριστείτε το στρώμα σας, ...

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Μπορείτε να κάνετε ρεαλιστικές τροποποιήσεις σε εικόνες που έχουν προοπτικά επίπεδα. Με το Σημείο Εκκίνησης, καθορίζετε τα επίπεδα στις εικόνες σας και, στη συνέχεια, χρησιμοποιώντας μια ποικιλία τεχνικών, προσθέστε ή εξαλείψτε αντικείμενα σε αυτά τα αεροπλάνα. Ανοίξτε μια εικόνα που χρειάζεται επεξεργασία. Εάν θέλετε να επικολλήσετε ...