PDA

View Full Version : تشخیص اینکه یک فایل xml چه فرزندانی دارد و تشخیص فرزندان فرزندان و همینطور تا آخر



amirjalili
دوشنبه 24 اسفند 1388, 11:08 صبح
دوستان فرض کنید میخواهیم برنامه ای بنویسیم که یک فایل xml رو بگیره و خودش تشخیص بده که چه نودی زیر مجموعه یک نود دیگس و همچنین فرزندان اون نود و فرزندان فرزندانش و .... رو تشخیص بده.
درست مثل یه treeview یا نرم افزار های کار با xml که وقتی یک فایل xml رو بهشون بدی خودش همه زیر مجموعه ها رو تشخیص میده و میره تا آخر و اون رو نمایش میده.
این تشخیص اتوماتیک به چه صورته چون ما اگه بخواهیم خودمون بنویسیم باید به تعداد نامعلم دستور for , if , haschildnodes و... بنویسیم که منطقی نیست.

راه حل چیه؟ چطور باید ایم برنامه رو نوشت؟

meysam_pro
دوشنبه 24 اسفند 1388, 11:55 صبح
در مورد طراحی زبانهای برنامه سازی(Programing language Design) سرچ کن البته درس کامپایلر هم بدردت میخوره.

csharpdeveloper
دوشنبه 24 اسفند 1388, 12:38 عصر
http://support.microsoft.com/kb/317597

amirjalili
دوشنبه 24 اسفند 1388, 13:22 عصر
http://support.microsoft.com/kb/317597

من اگه میخواستم از treeviewcontroll استفاده کنم که دیگه سوال کردن لازم نبود.



در مورد طراحی زبانهای برنامه سازی(Programing language Design) سرچ کن البته درس کامپایلر هم بدردت میخوره.

من میخوام از خود زبان برنامه نویسی برای این کار استفاده کنم. واقعا برای این کار باید ببینم مثلا طراحی زبان C#‎‎ چطوری بوده؟!
بالاخره راه حلی داره.

ببینید اصلا خود همین کنترل treeview پشت صحنه چطوری کار میکنه؟ این کنترل هم کاری تقریبا مشابه انتظار من رو انجام میده. بله. فرض کنید میخواهیم TreeView بسازیم(البته من قصدم این نیست بلکه منظورم الگوریتم کار این کنترل هست). چطوری این کار رو بکنم. شما اگه یک فایل xml رو به TreeView معرفی کنید خودش میره همه node ها رو تا آخر میخونه.
برای این کار از چه الگریتمی استفاده میکنه؟ بالاخره ما برای خوندن و تشخیص تعداد گره ها و همچنین تشخیص پدر و فرزند مجبوریم تعدادی if , for ,... استفاده کنیم. یعنی باید بیاییم برای هر گره چک کنیم آیا فرزندی داره و اگر داره خود اون فرزند ها هم آیا فرزندی دارن و همینطور تا آخر. این برای فایل xml با تعداد گره های نامعلوم جواب نمیده. اصلا مسخرس. :عصبانی++:

gwbasic
دوشنبه 24 اسفند 1388, 13:57 عصر
من درست منظور شما رو متوجه نمی شم یعنی شما از XmlDocument نمی خواهی استفاده کنی و البته بقیه کلاسهای مورد نظر ....؟

ولی به هر حال برای پیمایش یک فایل Xml که دارای تعداد نامشخص Child می باشد باید از الگوریتم Recursive استفاده شود.

amirjalili
دوشنبه 24 اسفند 1388, 14:21 عصر
چرا.. معلومه که باید از XmlDocument استفاده کنم.
منظورم اینه که برای تعداد گره نامشخص در یک فایل xml نمیشه دونه دونه رفت با دستور های شرطی و حلقه چک کرد و دید که مثلا آیا این فرزند خودش فرزندی داره و اگر داره آیا فرزندهاش هم فرزندی دارن.. اگه یه xml مشخص بود که کاری نداشت اما برای تعداد گره نامشخص ما نمیدونیم چند تا فرزند داریم تا بیاییم و به تعداد فرزندها چک کنیم ببینیم آیا اون ها هم فرزندانی دارند یا خیر.

FastCode
دوشنبه 24 اسفند 1388, 14:55 عصر
to understand recursion you must first understand recursion.

amirjalili
دوشنبه 24 اسفند 1388, 15:57 عصر
بله. باید از Recursive استفاده کنم..
میدونستم Recursive چیه اما اصلا یادم رفته بود همچین چیزی هم هست. :لبخند:

meysam_pro
سه شنبه 25 اسفند 1388, 11:21 صبح
نقل قول:
در مورد طراحی زبانهای برنامه سازی(Programing language Design) سرچ کن البته درس کامپایلر هم بدردت میخوره.
من میخوام از خود زبان برنامه نویسی برای این کار استفاده کنم. واقعا برای این کار باید ببینم مثلا طراحی زبان C#‎‎‎‎ چطوری بوده؟!

دوست من یه کم رو حرفی که گفته شده جستجو میکردی، بعد جواب میدادی!
شما در واقع میخوای ساختار یک متن رو پردازش کنی، پس باید متن ات رو تجزیه(Parse) کنی، این مباحث و بسیار بیشترش در این درس ها که گفتم، گفته میشه، به طور مثال فهمیدن حلقه های تو در تو یک آنولوژی از سوال شماست.