کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش کار با فایل های XML در اندروید

آموزش کار با فایل های XML در اندروید
شرح مختصر پروژه

در این مقاله قصد داریم تا نحوه کار با فایل های XML در اندروید را بصورت تصویری در محیط برنامه نویسی Eclipse به شما دانشجویان محترم آموزش دهیم...

توضیحات پروژه

دوره آموزش آندروید

رمز فایل :tahlildadeh.com

 

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

با عرض سلام و خسته نباشید به شما دانشجویان محترم آموزشگاه تحلیلگر داده ها. در این مقاله قصد داریم تا نحوه کار با فایل های XML در اندروید را بصورت تصویری در محیط برنامه نویسی Eclipse به شما دانشجویان محترم آموزش دهیم.

اهداف پروژه :

در این پروژه ما  قصد داریم اهداف زیر را پیاده سازی نماییم:

ساخت یک کلاس Data Model برای ذخیره نمودن اطلاعات تجزیه شده از فایل XML

ساخت یک کلاس برای تجزیه کردن فایل XML و واکشی اطلاعات از آن

نمایش اطلاعات به کاربر

برای شروع کار ابتدا می بایست یک پروژه جدید در محیط Eclipse ایجاد نماییم. برای این منظور از منوی File زیر منوی New و سپس زیر منوی Android Application Project را انتخاب می نماییم. (شکل 1)

 

clip_image002[12]

شکل 1

 

همچنین برای ساده تر شدن و بالا بردن سرعت کار می توانید از منوی ابزار ها، منوی New و سپس Android Application Project را انتخاب نمایید. (شکل 2)

clip_image004[14]

شکل 2

با انجام هر دو روش پنجره جدیدی با عنوان New Android Application باز می گردد. (شکل 3)

 

clip_image006[8]

شکل 3

در این پنجره قسمت هایی وجود دارد که در زیر به توضیح آنها می پردازیم :

Application Name: در این فیلد می بایست نام برنامه خود را وارد نمایید. توجه داشته باشید که هر مقداری را که در این فیلد وارد نمایید، برنامه با این نام در لیست برنامه های نصب شده قرار خواهد گرفت.

در این فیلد می توانید یک رشته فارسی نیز وارد نمایید.

Project Name: در این فیلد می بایست نام کلی پروژه خود را وارد نمایید و بهتر است که یک رشته با معنا و مرطبت با برنامه خود وارد نمایید.

زمانی که مقدار فیلد Application Name را وارد می نمایید، فیلد Project Name نیز بصورت خودکار همان نام را وارد می نماید. توجه داشته باشد که اگر فیلد Application Name را با یک رشته فارسی مقداردهی نمودید، برای جلوگیری از خطاها می بایست رشته فارسی تولید شده در فیلد Project Name را با یک رشته معادل انگلیسی جایگزین نمایید.

Package Name:  در این فیلد می بایست پکیج پروژه خود را تعیین نمایید که بهتر است آدرس وب سایت خود را بدون درج http  و www و بصورت از آخر به اول و به همراه نام وارد شده در فیلد Project Name وارد نمایید. این نوع مقداردهی به برنامه های مارکت نظیر بازار و Google Paly این امکان را میدهد تا زمانی که نسخه جدیدی از برنامه شما ساخته و آماده منتشر گردید باخبر شده و نسخه جدید برنامه تان را جایگزین نسخه قبلی نماید.

Minimum Required SDK: در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که برنامه تان به چه حداقل نسخه ای از سیستم عامل اندروید نیاز دارد. برای مثال اگر گزینه API 14 را انتخاب نمایید، برنامه تان در سیستم عامل اندروید پایین تر از اندروید 4 یا همان Ice-Cream Sandwich، نصب و اجرا نمی گردد.

اگر از امکانات خاص نسخه های جدیدتر سیستم عامل اندروید استفاده نمی نمایید پیشنهاد می گردد که API 8  را انتخاب نمایید. چرا که با انتخاب این نسخه از سیستم عامل اندروید مطمئن خواهید بود که برنامه شما در تمامی گوشی ها و تبلت ها اجرا خواهد شد.

Target SDK: در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که بالاترین نسخه اندرویدی که برنامه شما می تواند در آن نصب و اجرا گردد کدام نسخه است. بدیهی ست که هرچه سطح API انتخاب شده بالاتر باشد، گوشی ها و تبلت های جدید نیز می توانند از برنامه شما استفاده نمایند.

Compile With: در این لیست انواع API های « نسخه های سیستم عامل اندروید » منتشر شده توسط گوگل وجود دارد. با انتخاب هر کدام از آنها مشخص می نمایید که برنامه Eclipse از کدام نسخه از سیستم عامل اندروید برای نوشتن کلاس های برنامه و همچنین کامپایل و تست نمودن آن استفاده نماید.

Theme: در این لیست می توانید یک Theme برای برنامه خود انتخاب نمایید.

توجه داشته باشید زمانی که مقدار Compile With را کمتر از API 14 انتخاب نمایید، از این قسمت نمی توانید استفاده نمایید و می بایست از لیست موجود گزینه None رو انتخاب نمایید.

پس از مقداردهی نمودن فیلد های ذکر شده بر روی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 4)

clip_image008[10]

شکل 4

در مرحله بعدی اگر گزینه Create custom launcher icon را انتخاب نمایید، برنامه Eclipse به شما اجازه میدهد تا برای برنامه خود یک عکس جهت ساختن icon انتخاب و یا با استفاده از ابزار های خود برنامه Eclipse، icon مورد نظر خود را ترسیم نمایید. توجه داشته باشید که در صورت عدم انتخاب این گزینه، صفحه مربوطه برای شما باز نخواهد شد.

همچنین اگر گزینه Create Activity را انتخاب نمایید، برنامه Eclipse به شما اجازه میدهد که نام و نوع activity برنامه تان را انتخاب نمایید.

این دو گزینه را انتخاب می نماییم و سایر گزینه ها را به حالت پیش فرض خود می گذاریم. حال مجددا بروی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 5)

clip_image010[10]

شکل 5

در مرحله بعدی می توانید برای برنامه خود یک icon انتخاب و یا رسم نمایید.

دکمه image برای انتخاب یک عکس ترجیحا با فرمت png به عنوان icon برنامه

دکمه Clipart برای انتخاب یک clipart « شکلک » به عنوان icon برنامه

دکمه Text برای ورود یک نوشته به عنوان icon برنامه مورد استفاده قرار می گیرند.

ما دکمه image را انتخاب و پس از انتخاب کردن عکس مورد نظر به عنوان icon برنامه بر روی دکمه Next کلیک می نماییم تا به مرحله بعدی ایجاد پروژه برویم. (شکل 6)

 

clip_image012[12]

شکل 6

در مرحله بعدی گزینه Create Activity را انتخاب می نماییم و از لیست موجود که بیانگر انتخاب نوع Activity برنامه می باشد گزینه Blank Activity را انتخاب می نماییم. (شکل 7)

 

clip_image014[14]

شکل 7

در مرحله آخر نیز باید برای activity و layout خود یک نام انتخاب نمایید. ما نام انتخاب شده پیش فرض را قبول کرده و بر روی دکمه Finish کلیک می نماییم تا پروژه مان ساخته شود. (شکل 8)

 

clip_image016[14]

شکل 8

تا این جای کار ما پروژه خود را در برنامه Eclipse ایجاد کرده ایم. حال برای ادامه کار می بایست layout برنامه خود را طراحی نماییم.

برای این منظور یک Button و TextView بر روی layout خود قرار می دهیم. (شکل 9)

clip_image018[4]

شکل 9

همچنین مقادیر لازمه برای نمایش متن Button را در فایل string.xml وارد می نماییم. (شکل 11)

clip_image019[10]

شکل 10

در مرحله بعدی می بایست کلاس Model خود را ایجاد نماییم تا بوسیله آن بتوانیم از اطلاعات تجزیه شده را در آن ذخیره و به کاربر نمایش دهیم. برای این کار ابتدا بر روی آیکون clip_image020[10] در نوار ابزار کلیک می نماییم. با این عمل پنجره Java New Class باز می گردد. در این پنجره و در فیلد Package، نام پکیجی که تمایل داریم کلاس مان به آن اضافه گردد را انتخاب می نماییم. برای راحتی کار نیز می توانیم با انتخاب نمودن دکمه Browse، پکیج مورد نظر خود را انتخاب نماییم. (شکل 11)


clip_image022[4]

شکل 11

 

سپس در فیلد Name، نام کلاس خود را وارد نموده و بر روی دکمه Finish کلید می نماییم. (شکل 12)

clip_image024[6]

شکل 12

در مرحله بعدی می بایست کدهای لازم را در این کلاس وارد نماییم. ابتدا متغیرهای لازم را تعریف می نماییم. (شکل 13)

 

 

clip_image025[4]

شکل 13

توجه داشته باشید که بهتر است متغیرهای تعریف شده دقیقا هم نام فیلدهای موجود در فایل XML باشد.

در مرحله بعد می بایست برای متغیرهای تعریف شده، متدهای Setter و Getter تعریف نماییم. (شکل 14)

 

 

clip_image027[4]

شکل 14

بعد از ایجاد نمودن کلاس Model، می بایست کلاس دیگری را ایجاد نماییم که با استفاده از آن بتوانیم فایل XML را تجزیه و اطلاعات مورد نیاز خود را از آن واکشی نماییم. برای همین منظور طبق روال ذکر شده کلاس جدیدی با نام XMLParser تعریف می نماییم.

در این کلاس، ابتدا شی های مورد نیاز خود را تعریف می نماییم. (شکل 15)

clip_image028[4]

شکل 15

در مرحله بعد می بایست متدی با نام startDocument را تعریف نماییم. توجه داشته باشید که حتما می بایست از این نام استفاده گردد. این متد در واقع وظیفه Initialize کردن شی ساخته تعریف شده از کلاس ArrayList را داراست. این متد زمانی صدا زده می شود که برنامه مان در حال آماده سازی جهت شروع کردن عملیات تجزیه گره های فایل XML می باشد. (شکل 16) 

clip_image029[4]

شکل 16

متد بعدی که می بایست تعریف نماییم متد startElement است. توجه داشته باشید که برای این متد نیز حتما می بایست از همین نام استفاده گردد. این متد زمانی که برنامه مان در حال خواندن فایل XML می باشد، توسط خود برنامه صدا زده می شود. در این متد با استفاده از پارامتر ورودی localName ای که دارد به دنبال گره مورد نظر که اطلاعات اصلی در آن قرار دارد می گردیم و پس از پیدا نمودن آن، شی jobsValues را که قبلا تعریف نموده ایم را جهت ذخیره نمودن داده های اصلی، می سازد. (شکل 17)

clip_image031[6]

شکل 17

نام گره ای که اطلاعات اصلی در آن ذخیره شده اند job نام دارد.

متد بعدی endElement می باشد. مجددا توجه داشته باشید که برای این متد نیز می بایست از همین نام استفاده شود. این متد زمانی که گره مورد نظر در فایل موجود باشد و آنرا پیدا نموده باشیم توسط خود برنامه مان صدا زده می شود. در این متد اطلاعات گره پیدا شده را در کلاس Model ذخیره می نماییم و زمانی که تمامی اطلاعات گره job را پیدا و خواندیم و در کلاس Model ذخیره نمودیم، آنها را در شی list ذخیره می نماییم. (شکل 18)

clip_image032[6]

شکل 18

برای ذخیره نمودن اطلاعات خوانده شده از فایل XML در کلاس Model از متد Setter متغیرهای تعریف شده در کلاس Model استفاده می نماییم.

در زمان ذخیره نمودن اطلاعات گره ها در کلاس Model، می بایست نوع داده ای آنها را به String تبدیل نماییم. برای این منظور از شی builder که از کلاس StringBuilder ساخته شده است استفاده می نماییم و هرگاه بخواهیم داده ی خوانده شده را به نوع داده ای دیگری تبدیل نماییم از نام کلاس متناظر با آن نوع داده ای « نظیر کلاس Integer برای تبدیل مقدار خوانده شده به نوع داده ای int » استفاده می نماییم.

در اینجا کلاس XMLParser تمام می شود و می بایست کد های اصلی برنامه را در کلاس MainActivity وارد نماییم.

اولین کدی که می بایست به کلاس MainActivity اضافه نماییم متد onCreate می باشد. این متد یکی از متدهای اصلی برنامه و همین طور چرخه حیات برنامه های اندرویدی می باشد و زمانی که برنامه برای اولین بار اجرا می گردد و یا دستگاه اندرویدی ما از حالت portrait به حالت landscape و یا بر عکس تغییر می کند، این متد فراخوانی می گردد.

یکی از دستورات مهمی که باید به این متد اضافه شود دستور setContentView است. وظیفه این دستور به نمایش در آوردن layout برنامه می باشد.(شکل 19)

clip_image033[6]

شکل 19

مقدار activity_main نام فایل xml مربوط به layout برنامه مان می باشد.

همچنین دستور savedInstanceState حالت جاری layout برنامه را ذخیره می نماید. به این معنا که، فرض نمایید بر روی layout خود یک ابزار EditText قرار داده اید و مقدار نام خودتان را درون آن وارد کرده اید. زمانی که حالت دستگاه اندرویدی خودتون را به landscape و یا portrait تغییر دهید مشاهده می نمایید که مقدار نام شما هنوز در EditText وجود دارد و پاک نشده است. دلیل آن به خاطر استفاده از دستور فوق می باشد.

در مرحله بعد دسترسی های لازم به ابزارهای Button و TextView ایجاد می نماییم و متغیرها و کلاس های مورد نیاز را تعریف می نماییم. (شکل 20)

clip_image034[4]

شکل 20

اگر در زمان تعریف یک متغیر آنرا در ابتدای کلاس جاری و قبل از تمامی متدهای خود تعریف نمایید، آن متغیر یک متغیر سراسری محصوب شده و می توانید به راحتی در تمامی متدها و کلاس های کلاس جاری از آن استفاده نمایید.

اگر در زمان تعریف یک متغیر از کلمه کلیدی final استفاده نمایید، مقداری که به آن نصبت میدهید یک مقدار یکتا خواهد بود و به هیچ وجه نمی توانید مقدار آنرا در طول برنامه خود تغییر دهید.

برای راحتی کار ما ساختار فایل XML خود را بصورت دستی در یک متغیر ذخیره نموده ایم. شما می توانید آنرا برروی بستر اینترنت قرار دهیم و از داخل برنامه آنرا دانلود و مورد تجزیه قرار دهید و یا یک فایل XML در پوشه assets پروژه خود اضافه نمایید.

حال که دسترسی های لازم را ایجاد نموده ایم و متغییر های اولیه مورد نیاز را نیز تعریف و مقداردهی اولیه نموده ایم، در مرحله بعد می بایست ساختار XML ذخیره شده در متغیر XMLData را تجزیه نماییم و اطلاعات اصلی آنرا واکشی نماییم و در آخر به کاربر نمایش دهیم. (شکل 21)

clip_image035[4]

شکل 21

 

کدهای بالا را در ادامه کدهای وارد شده قبلی در متد onCreate قرار میدهیم.

 

 

در کد بالا، ابتدا با استفاده از خصوصیت setOnClickListener، برای دکمه خود رویداد کلیک را شبیه سازی نموده ایم. در مرحله بعد،

ابتدا برای جلوگیری از بروز خطاهای احتمالی از بلاک try / catch استفاده نموده ایم. سپس شئی با نام parser از کلاس XMLParser ساخته ایم. سپس با استفاده از کلاس های BufferedReader و InputStream، محتوای متغیر XMLData را خواندیم. سپس با استفاده از دستورات زیر اقدام به تجزیه نمودن محتوای XML ذخیره شده در متغیر XMLData نمودیم. (شکل 22)

 

clip_image036[6]

شکل 22

زمانی که دستورات بالا اجرا شوند، متدهای تعریف شده در XMLParser نیز اجرا خواهند شد.

با اجرا شدن دستورات فوق، متغیر myData حاوی اطلاعات تجزیه و واکشی شده از محتوای XML می باشد.

در خط بعدی با استفاده از دستور شرطی if چک نموده ایم که این متغیر خالی نباشد. سپس متغیری با نام lblOutputData و از نوع داده ای String تعریف نموده ایم و سپس با استفاده از حلقه foreche و متدهای Getter تعریف شده برای متغیرهای کلاس Model، تمامی اطلاعات موجود در فایل myData را می خوانیم و در متغیر هایی هم نام با نام فیلدهای فایل XML ذخیره می نماییم و سپس تمامی آنها را با استفاده از عملگر + به یکدیگر می چسبانیم و یک پیغام را تشکل می دهیم و در متغیر lblOutputData قرار می دهیم. حال اگر مقدار شی xmlRowData خالی باشد، با استفاده از کلاس Log پیغام مناسبی برای برنامه نویس چاپ می نماییم و در غیر صورت مقدار متغیر lblOutputData را با استفاده از متد setText ابزار lblOutput « ListView »، به کاربر نمایش می دهیم.

حال اگر در اجرا برنامه مشکلی ایجاد گردد کدهای موجود در قسمت بلاک catch اجرا می گردند. در این بلاک با استفاده از کلاس Log نوع خطای ایجاد شده را به برنامه نمایش می دهیم.

کلاس Log برای درج پیغام هایی در پنجره LogCat برای دیباگ نمودن پروژه های اندرویدی مورد استفاده قرار می گیرد. این کلاس دارای 6 متد مهم و کاربردی می باشد که عبارتند از : e، w، i، d، v، wtf. تمامی این متد ها دو پارامتر ورودی از نوع String دارند. پارامتر اول برای مشخص نمودن مقدار فیلد Tag و پارامتر دوم برای مشخص نمودن مقدار فیلد Text پنجره LogCat می باشد.

برای دسترسی به پنجره LogCat می بایست به منوی Window -> Show View -> Other… رفته و در پنجره باز شده، در کادر type filter text، عبارت LogCat را وارد نماییم و گزینه LogCat را انتخاب و بر روی دکمه OK کلیک نماییم.

تفاوت بین انواع Log ها:

Log.e

هنگام بروز یک خطا، این Log را به کار می بریم. منظورمان از خطا، عدم اجرا شدن دستوری مهم است. یعنی عملیاتی که مد نظرمان بوده است، اجرا نگردیده و یک خطا به وجود آمده است.

 

Log.w

زمانی به کار می رود که بخواهیم در مورد به وجود آمدن یک وضعیت، هشدار بدهیم. اگرچه وضعیت به وجود آمده، اختلال مهمی در روند اجرای کدها ایجاد نمی کند، ولی می بایست به صورت یک نکته مهم به برنامه نویس تذکر داده شود تا در صورت نیاز، موارد مربوط به آن را در کدنویسی های بعدی مد نظر قرار بدهد.

Log.i

برای نمایش اطلاعات مفیدی در زمینه اجرای بخش های مختلف برنامه اندروید به کار گرفته می شود. مثلا اگر کد شما در کل شامل 5 مرحله باشد، می توانید در انتهای اجرای هر مرحله، با Log.i، پیامی مبنی بر اجرای موفقیت آمیز هر مرحله، در LogCat نمایش بدهید.

Log.d

برای خطایابی برنامه اندروید به کار گرفته می شود. « اگر زمانی با خطا روبرو شویم، با پیام های نوشته شده توسط Log.d می توانیم علت ایجاد خطا را پیدا نماییم »

Log.v

برای نمایش تمامی نکات کوچک و بزرگ از اجرای برنامه اندروید، در قسمت LogCat ، به کار گرفته می شود.

Log.wtf

مشابه Log.e می باشد، اما برای مواردی به کار گرفته می شود که یک خطای خیلی مهم رخ داده باشد که با وقوع آن خطا، باید کل روند اجرای برنامه اندروید متوقف گردد.

در صورتی که برنامه بدون هیچ مشکلی اجرا گردد شبیه به تصویر زیر خواهد بود. (شکل 23)

 

clip_image038[6]

شکل 23

در اینجا کار ما به اتمام میرسد. امیدواریم نهایت استفاده از این مقاله را برده باشید.

شاد و پیروز باشید.

 

 

 

 

 

 

1394/09/05 9926 435
رمز عبور : tahlildadeh.com یا www.tahlildade.com
نظرات شما

نظرات خود را ثبت کنید...