<xml>
<man id="1" age="23" lastname="Avgil" />
<man id="2" age="85" lastname="Cohen" />
<man id="3" age="26" lastname="Adams" />
</xml>דרך דוגמה זו נלמד איך טוענים את המידע לתוך פלאש ואיך ניגשים אל המידע עצמו .
שלב א': טעינת ה-XML אל פלאש
יש לוודא כי קובץ ה XML וקובץ הפלאש נמצאים באותה תיקייה או לחילופין להגדיר נתיב אבסולוטי לקובץ ה- XML. אוסף הפקודות הבאות טוען את המידע מקובץ ה- XML אל אובייקט XML חדש בפלאש. כל נושא חיפוש ועריכת המידע אינה מתבצע על קובץ ה- XML אלא על האובייקט החדש שיצרנו, שהוא העתק של הקובץ החיצוני .// יצירת אובייקט XML חדש
myXML = new XML();
// טעינת המידע מהקובץ החיצוני
myXML.load("questions.xml");
// מחיקת רווחים וטאבים
myXML.ignoreWhite = true;
// בדיקה והקפצת הודעה שהמידע עבר בהצלחה
myxml.onLoad = function(success) {
trace("xml loaded");
};יש להקפיד בעת עבודה עם קובץ XML לבצע בדיקה האם הקובץ נטען. פעמים רבות אנשים לא מבצעים בדיקה ומנסים ישר לבדוק מידע באובייקט ה- XML אולם האובייקט עדיין לא הספיק לטעון את המידע מהקובץ החיצוני.
לפני קבלת TRUE מהבדיקה אסור לנסות לגשת לאובייקט! ניתן להכניס את הקוד אל פריים ראשון ולעשות בו STOP וברגע שהמידע נטען לגשת לפריים 2 ומשם להתחיל את העבודה עם ה- XML .שלב ב': איך ניגשים למידע
ובכן, אל המידע ניתן לגשת במספר דרכים ע"י שימוש במאפיינים שונים. נסקור תחילה מספר מאפיינים בסיסיים. לגישה אל האובייקט עצמו נשתמש ב- Trace . אם נרצה לראות את כל אובייקט ה- XML שלנו נוכל לרשום:trace(myXML);
שימו לב שביטוי זה יראה את כל מה שיש במסמך XML אולם אנו בעצם כבר לא קוראים מידע מהמסמך אלא מהאובייקט שיצרנו לנו בתוך פלאש.
firstChild - הבן הראשון (הרמה הבאה)
אם נרשום את השורה:trace(myXML.firstChild);
נקבל בעצם את אותו דבר שהיינו מקבלים לו היינו רושמים ללא firstChild . למה? מכיוון שהרמה הראשונה של ה- XML הוא ה- XML עצמו . אנו בעצם קוראים לרמה הראשונה בתוך האובייקט.
לעומת זאת, אם נרשום:trace(myXML.firstChild.firstChild);
כבר נראה הבדל, מכיוון שאנו ניגשים לרמה אחת מתחת לרמה הראשית. שורת הקוד הנ"ל תציג לנו רק את השורה של האיש הראשון ברשימה.
אם ננסה לרשום:trace(myXML.firstChild.firstChild.firstChild);
נקבל ערך NULL שהוא אומר "ערך ריק" . מתחת ל- MAN הראשון אין עוד רמה, ולכן לא נוכל לקבל מידע מתוך משהו שאינו קיים. לו רצינו לשלב רמה נוספת מתחת ל- MAN מסמך ה- XML שלנו היה נראה כך :
<xml>
<man id="1" age="23" lastname="Avgil">
<married="no"/>
<childrens="yes"/>
</man>
<man id="2" age="85" lastname="Cohen" />
<man id="3" age="26" lastname="Adams" />
</xml>שימו לב שסגירת התגית של ה- MAN הראשון מתבצעת אחרי התגיות החדשות שהוספנו. אם נשנה את הקובץ החיצוני לקובץ שכזה, יקפיץ הביטוי את </"married="no>.
סיכום ביניים, על מנת להיכנס לתוך רמות המבנה ההיררכי של ה XML אפשר להשתמש ב- firstChild כאשר כל הוספה של הביטוי נכנסת רמה אחת פנימה . אם אין רמה כזו קיימת נקבל Null .childNodes- אנידוקס NODE
כאשר יש לנו XML עם מספר שלוחות בעלות אותה רמה לא נוכל להגיע אל השלוחה השניה ע"י שימוש ב- firstChild . אם נרצה לגשת אל ה- MAN השני שלנו נצטרך להיכנס תחילה לרמה הראשונה ע"י firstChild , ובתוך אותה רמה לפנות לשלוחה השנייה בסדר. גישה לשלוחות בעלות אותה רמה מתבצעת על ידי המאפיין childNodes . הפקודה היא פקודה בסינטקס מערך כלומר אחריה יש סוגריים מרובעות ובתוכן מספר, משתנה או ביטוי מתמטי כלשהו. יש לזכור כי במערך האיבר הראשון הוא אפס ולכן אם נרצה לגשת אל MAN מספר 2 ברשימה שלנו הביטוי יראה כך :trace(myXML.firstChild.childNodes[1]);
אם יש לנו רשימה עם יותר רמות בתוכה, לדוגמה הרשימה הבאה:
<xml>
<man id="1" age="23" lastname="Avgil"/>
<man id="2" age="85" lastname="Cohen">
<parm height="1.68"/>
<parm weight="56"/>
<parm eyecolor="blue"/>
</man>
<man id="3" age="26" lastname="Adams" />
</xml>נוכל לגשת לבדוק מה צבע עיניו של האיש השני על ידי שימוש כפול ב- childNodes . הפעם הראשונה תמקד אותנו על האיש השני והפעם השניה על הפרמטר parm השלישי ברשימה של האיש השני.
trace(myXML.firstChild.childNodes[1].childNodes[2]);
בצורה כזו לא תמיד נוח להכניס מידע ופרמטרים, לעיתים נוח יותר להכניס את כל התגיות אל אותה תגית ב- XML כמו בדוגמה הבאה, שפשוט מכילה יותר פרמטרים:
<man id="1" age="23" lastname="Avgil" height="1.68" weight="56" />
אם נשתמש בצורת כתיבה כזו נצטרך לדעת איך ניגשים למידע פנימי של התגית.
attributes- כניסה למידע בתוך התגיות
כאשר נרצה לברר ערך של מסוים של תגית, כמו למשל שם המשפחה בדוגמה המקורית, נשתמש ב- attributes . מאפיין זה נכתב אחרי שרשרת המאפיינים הקודמים הממקדים אותנו בשלוחה המתאימה. השורה הבאה מוצאת את שם המשפחה של MAN 2 ברשימה שלנו. שימו לב שאחרי ה- attributes יש לכתוב את שם המאפיין שרשום ב- XML . אם נרצה לבדוק את הגיל שלו נצטרך פשוט לכתוב במקום lastname את הביטוי age :trace(myXML.firstChild.childNodes[1].attributes.lastname);
הוסף תגובה