XML:::...שאלה קטנה...:::XML

yuval k

New member
את יכולה לכתוב קובץ הגדרות עיצוב

(XSL) ולהחיל אותו על ה-XML שאת מכניסה ל-iframe
 
חשבתי על זה

רק שהXML הוא מאד דינמי, וכל פעם הוא במבנה אחר לא צפוי מראש. אז אני רק רוצה שזה יהיה קריא...
 
שאלה נוספת ../images/Emo163.gif

יש לי XML קצת מורכב, קשה לי להסביר אותו אז אני מצרפת את הקובץ. קראתי אותו לDataSet ואני מנסה לגשת לנתונים ב-lesson ןב-course ללא הצלחה. את שאר הנתונים אני קוראת וזה עובד כך:
ds.Tables[0].Rows["name"].ToString().Trim(); ds.Tables[0].Rows["Time"].ToString().Trim();

אני כל הבוקר עובדת על זה ואני חושבת שזה צריך להיות משהו קטן ומטופש רק שהוא כנראה נשגב מבינתי... אשמח לכל סיוע שהוא
(גם על השאלה הקודמת) תודה רבה
 
אין הודעת שגיאה

אני פשוט לא יודעת מה לכתוב כדי להגיע אליהם, זה פשוט ערכים כפולים בתוך הXML. אני שולחת תמונה של המבנה של הXML הזה. תודה
 
זה מצוין רק שכשאני כותבת:

string crs=xmlds.Tables[0].Rows["course"].ToString().Trim();

אז אני מקבלת את ההודעה הבאה:
Specified cast is not valid.​
וזה נכון, איזה קורס בדיוק הוא יביא לי - הראשון או השני? זה מעין טבלה בתוך טבלה...
 

gilad g

New member
אה, כן..

זה כבר תלוי איך ה-DS תרגם את ה-XML לטבלאות. אני חושב שהוא הכניס את הנתונים האלו לטבלה אחרת - שווה לבדוק. את זה את עושה ע"י כתיבת פרוצדורה קטנה שמדפיסה את התוכן של ה-DataSet. או שפשוט תעשי bind לאיזה datagrid.
 
גם אני חושבת כך

ואפילו בטוחה. השאלה היא איך מגיעים לטבלה ההיא... אני חשבתי שזה צריך להיות משהו כזה:
ds.Tables[0].Rows.Tables["course"].Rows[j];

רק ש"לצערי" אין אפשרות כזו... יש פונקציה בשם: GetChildRows, כתבתי כך:
DataRow [] scriptRows; scriptRows=xmlds.Tables[0].Rows.GetChildRows("course");

ותמיד האורך היה 0 ולהדפיס... אם הייתי יודעת איך להגיע לערכים האלו, הייתי יודעת גם איך להדפיס אותם.
 

gilad g

New member
הם פשוט נמצאים בטבלה אחרת

ו-GetChildRows לא הצליח לך, בגלל שהוא מקבל את השם של ה-DataRelation, ולא את השם של העמודה. בדקתי, ומצאתי שבתור ברירת מחדל, השם של ה-DataRelation במקרה שלך הוא Group_course. אגב, הנה הפרוצדורה שבה השתמשתי כדי להדפיס את ה-DataSet (על קשריו וטבלאותיו).
public static void printDS(DataSet ds) { foreach(DataTable t in ds.Tables) { Console.WriteLine("Table :"+t.TableName); Console.WriteLine("-------------------------\n"); foreach(DataColumn c in t.Columns) { Console.Write(c.ColumnName + "\t"); } Console.Write("\n"); Console.WriteLine("-------------------------------"); foreach(DataRow dr in t.Rows) { for(int i=0;i<t.Columns.Count;i++) { Console.Write(dr); Console.Write("\t"); } Console.Write("\n"); } Console.WriteLine("\n\n"); } Console.WriteLine("DataRelations: "); Console.WriteLine("------------------"); foreach(DataRelation rel in ds.Relations) { Console.WriteLine(rel.RelationName); Console.WriteLine("Parent Columns:"); foreach(DataColumn col in rel.ParentColumns) { Console.Write("\t"); Console.Write(col.ColumnName); Console.Write("\t"); Console.WriteLine(col.Table.TableName); } Console.WriteLine("Child Columns:"); foreach(DataColumn col in rel.ChildColumns) { Console.Write("\t"); Console.Write(col.ColumnName); Console.Write("\t"); &nbsp
 
למעלה