Transcript JAXB

© Keren Kalif
JAXB
‫קרן כליף‬
‫‪© Keren Kalif‬‬
‫ביחידה זו נלמד‪:‬‬
‫‪ ‬מהו ‪JAXB‬‬
‫‪ ‬יצירת מחלקות באמצעות ‪JAXB‬‬
‫‪ ‬טעינת אובייקטים מ‪XML -‬‬
‫‪2‬‬
‫מבוא ל‪JAX -‬‬
‫‪© Keren Kalif‬‬
‫‪Java Architecture for Xml Binding ‬‬
‫‪ ‬תשתית לקריאה וכתיבת ‪XML‬‬
‫‪ ‬באה להחליף את המנגנון של ‪:DOM‬‬
‫‪ ‬ב‪ DOM -‬כל המידע היה שמור בעץ של ‪ element‬ולא היו‬
‫אובייקטים ספציפיים למידע‬
‫‪ ‬באמצעות ‪ JAXB‬ניתן לייצר מחלקות עבור האלמנטים‬
‫השונים המוגדרים ב‪ ,xsd -‬ולכן העבודה יותר פשוטה‬
‫‪3‬‬
‫קובץ ה‪ xml -‬שאיתו נעבוד והסכימה‬
‫‪© Keren Kalif‬‬
‫‪4‬‬
© Keren Kalif
5
‫ המתאים‬xsd -‫קובץ ה‬
,‫לשים לב שתג זה קיים‬
‫ לא ידע‬JAVA -‫אחרת ה‬
‫לייצר ממנו את המחלקות‬
http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx
:xml -‫ מ‬xsd ‫כלי נוח ליצירת‬
© Keren Kalif
6
JAXB Binding ‫לייצר‬
‫ כדי לייצר‬
‫מחלקות‬
‫מהסכימה‬
:‫בפרוייקט‬
New 
JAXB Binding
‫המחלקות שנוצרו‬
‫‪© Keren Kalif‬‬
‫(‪)1‬‬
‫‪7‬‬
‫המחלקות שנוצרו‬
‫‪8‬‬
‫‪© Keren Kalif‬‬
‫(‪)2‬‬
‫המחלקות‬
‫שנוצרו (‪)3‬‬
‫‪© Keren Kalif‬‬
‫‪9‬‬
‫באמצעות אובייקט ממחלקה‬
‫זו נייצר אובייקטים‬
‫מהטיפוסים שנוצרו‬
‫מחזיר את ה‪-‬‬
‫‪root element‬‬
‫מה‪xml -‬‬
‫המעטפת לשימוש ב‪factory -‬‬
‫יצירת אובייקט המייצג את‬
‫האובייקט הראשי כ‪XML -‬‬
‫כתיבה למסך‬
‫כתיבה לקובץ‬
‫‪10‬‬
‫‪© Keren Kalif‬‬
© Keren Kalif
11
main -‫דוגמא ל‬
‫ לאובייקט‬XML -‫ טעינת ה‬:unmarshal
‫ בו‬package -‫ה‬
‫מוגדרת המחלקה‬
© Keren Kalif
12
‫‪© Keren Kalif‬‬
‫‪Validations‬‬
‫‪ ‬אם ב‪ xsd -‬יש הגבלת ערכים‪ ,‬מידע זה נאבד בתרגום למחלקה‬
‫‪ ‬דוגמא‪ :‬עבור ה‪ XML -‬וה‪ XSD -‬הבאים‪:‬‬
‫‪13‬‬
‫בדיקת תקינות המידע מול ה‪xsd -‬‬
‫‪© Keren Kalif‬‬
‫‪14‬‬
‫‪ ‬עד גרסאת ‪ jaxb 2.0‬היה ניתן להשתמש באבייקט‬
‫‪ Validator‬כדי לבדוק תקינות של אובייקט מול הסכימה‬
‫‪ ‬טיפוס ה‪ Validator -‬אינו זמין בגרסא ‪JAXB 2.0‬‬
‫)‪(deprecated‬‬
‫‪ ‬הולידציה מתאפשרת רק בזמן ה‪ marshal -‬וה‪unmarshal -‬‬
‫בדיקת תקינות ה‪ xml -‬מול ה‪xsd -‬‬
‫הגדרת הסכימה מולה‬
‫יש לבצע ולידציות‬
‫החריגה‬
‫‪© Keren Kalif‬‬
‫‪15‬‬
‫בדיקת תקינות אובייקט מול ה‪xsd -‬‬
‫‪© Keren Kalif‬‬
‫‪16‬‬
‫הפניות‬
‫‪© Keren Kalif‬‬
‫‪17‬‬
‫‪ ‬יתכן ויהיו ב‪ xml -‬אלמנטים שערכם חוזרים על עצמם כמה פעמים‬
‫‪ ‬למשל‪ ,‬כמה אנשים שגרים באותה כתובת‪:‬‬
‫‪ ‬כרגע‪ ,‬עבור כל ‪ Person‬ישמר אובייקט ‪Address‬‬
‫‪ ‬לעיתים נרצה להשתמש בהפניות‪ ,‬כך שאלמנטים המייצגים‬
‫אובייקטים זהים‪ ,‬יוגדרו פעם אחת ב‪ ,xml -‬במקום שכפול המידע‬
© Keren Kalif
18
‫ לדוגמת האנשים‬xsd -‫ה‬
© Keren Kalif
19
‫ עם הפניות‬xsd -‫ה‬
© Keren Kalif
20
PersonType - ‫המחלקות שנוצרו‬
‫המחלקות שנוצרו ‪AddressType -‬‬
‫שדה שהוגדר בסכימה‬
‫כ‪ID -‬ישמר כ‪String -‬‬
‫‪© Keren Kalif‬‬
‫‪21‬‬
© Keren Kalif
22
manager -‫עדכון ה‬
‫השימוש והפלט‬
‫‪© Keren Kalif‬‬
‫‪23‬‬
‫‪© Keren Kalif‬‬
‫קוסטומיזציה‬
‫‪24‬‬
‫לשינוי שם‬
‫המחלקה שתיווצר‬
‫לשינוי שם התכונה‬
‫המחלקות שנוצרו‬
‫באמצעות הקוסטימיזציות ניתן להתאים ולשנות את השמות‪.‬‬
‫לשימוש כאשר יש שמות שמורים או שכבר בשימוש כמו‬
‫‪ Class, List‬וכד' ב‪xsd -‬‬
‫‪© Keren Kalif‬‬
‫‪25‬‬
‫ביחידה זו למדנו‪:‬‬
‫‪ ‬מהו ‪JAXB‬‬
‫‪ ‬יצירת מחלקות באמצעות ‪JAXB‬‬
‫‪ ‬טעינת אובייקטים מ‪XML -‬‬
‫‪© Keren Kalif‬‬
‫‪26‬‬