آموزش parse (تجزیه) XML در برنامه نویسی اندروید

سلام توسعه دهندگان در این سری از آموزش برنامه نویسی اندروید به آموزش parse (تجزیه) XML در برنامه نویسی اندروید می پردازیم قبلا آموزش تجزیه یا Parse نوع داده ای Json را قرار دادیم امروز آموزش تجزیه XML را آموزش میدهیم بعد از Json بهترین نوع داده ای که می توان سراغ آن رفت XML است اما بازهم تاکید ما استفاده از Json است در هر حالت Json بهتر از Xml است اما شاید برخی خروجی Xml داشته باشند و بخواهند آن را Parse کنند در ادامه با ما همراه باشید تا نحوه parse (تجزیه) XML را در اندروید یاد گیرید.
 
Xml مخفف Extensible Mark-up Language و در اندروید یا هر زبان برنامه نویسی دیگر به منظور جابه جایی اطلاعات از Xml می توان بهره برد.
از سه راه مختلف می توان یک Xml را تجزیه (parse) کرد که عبارتند از :

  1. SAX Parsers
  2. DOM Parsers
  3. XMLPullParser

ما در این آموزش از XMLPullParser استفاده می کنیم بقیه آنها نیز در آموزش های مختلف قرار می گیرد.

DOM Parser

DOM Parser : نحوه کار به این شکل است که ابتدا کل داده وارد حافظه یا memory می شود سپس بعد از لود شدن چک می شود که آیا این xml درست است یا خیر (مثلا خطا دارد یا خیر) سپس شروع به parse کردن xml می کند. این روش کند ترین حالت Parse (تجزیه) Xml است نحوه پارس کردن نیز به این شکل است که Dom یک نود ابتدایی و نود انتهایی Xml را پیدا می کند و سپس شروع به تجزیه آنها می کند و فقط این نود ها Parse می شوند بقیه اجزا ندید گرفته خواهند شد.

SAX and XMLPullParser

بهترین راه برای پارس xml استفاده از این دو است سرعت در این نوع پارسر ها به مراتب بیشتر از DOM Parser است نحوه کار در این پارسر ها به شکل object base است و براساس هر node کار می کند.
در این آموزش ما یک داده تست xml را که در پوشه Assets قرار دارد را parse (تجزیه) می کنیم و در آموزش های بعدی یک داده xml را از سرور می خوانیم و سپس شروع به پارس آن خواهیم کرد.
 
خب ابتدا ما یک فایل xml باید در پوشه Assets ایجاد کنیم اگر نمی دانید چگونه پوشه Assets ایجاد کنید از لینک زیر استفاده کنید.
آموزش ایجاد پوشه assets در اندروید
یک فایل به نام sample.xml در پوشه Assets ایحاد کنید و کدهای زیر را در آن قرار دهید.

در بالا ما لیستی از شهر را همراه با آیدی و شهر آن ایجاد کردیم کد بالا یک نوع Xml است.
خب حالا باید یک کلاس Getter و Setter یا کلاس Pojo به نام Country.java ایجاد کنید و کدهای زیر را در آن قرار دهید.

در بالا به راحتی می توانیم داده ها را get و set کنیم یعنی دریافت و تعیین می توان بهره برد.
بعد از اینکار باید یک layout درست کنید نام layout ما برابر با activity_main.xml است و کدهای زیر را در آن قرار دهید.

در بالا یک TextView قرار گرفته است و بس
در نهایت کد MainActivity.java همانند زیر خواهد بود.

باید همیشه Parser توسط ما نوشته شود یعنی اینکه راهی برای پارس کردن به صورت سریع وجود ندارد هرچند که کلاس ها از قبل در اندروید وجود دارد ابتدا به کد متد parseXML خواهیم پرداخت نحوه کار به این شکل است که ابتدا باید فایل را بخوانیم پس از ورودی یک XmlPullParser را به عنوان ورودی می گیریم در این میان باید از بالا تا پایین فایل خوانده شود و براساس هر node باید با آن رفتار شود با استفاده از یک switch در حلقه while این کار را انجام دادیم خروجی کد بالا همان کلاس Country که در قبلس ساختیم خواهد بود.
در ابتدای کار باید  فایل را از Assets بخوانیم و بعد از آن با استفاده از XmlPullParser آن را به متدی که ساختیم می فرستم و در نهایت در TextView قرار خواهیم داد.
 
این آموزش هم به پایان رسید.
موفق باشید.

مطالعه بیشتر