مشخصات مقاله
-
2986
-
0.0
-
5431
-
0
-
0
پردازش XML به وسیله ی xmlpullparser
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
پردازش XML به وسیله ی xmlpullparser
مبحث پیش رو نحوه ی پردازش XML با اندروید را برای شما تشریح می کند. این بخش از مقاله بر اساس Eclipse 4.4، java 1.6 و Android 4.4 تعبیه شده است.
فهرست محتوا
1. مقدمه ای بر XML
بررسی اجمالی فایل های XML
مقایسه ی XML با دیگر قالب بندی ها
نمونه هایی از XML
المان های تشکیل دهنده ی یک فایل XML
2. پردازش فایل های XML در سیستم اندروید
3. مثالی از کاربرد کلاس xmlpullparser
1. مقدمه ای بر XML
بررسی اجمالی فایل های XML
Extensible Markup Language یا به اختصار XML، یک قالب بندی پابرجا و کارامد تبادل داده تلقی می گردد. این فرمت تبادل داده در سال 1998 میلادی توسط کنسرسیوم شبکه ی جهانی وب (WC3) برای اولین بار به عرصه ی برنامه نویسی پا گذاشت.
یک سند XML از عناصر مشخصی تشکیل شده و هر عنصر مختص خود دارای یک تگ آغاز، محتوا و تگ پایان می باشد. یک سند XML همچنین باید به طور دقیق یک عنصر ریشه (به عنوان مثال، یک تگ که تگ های دیگر را دربرمی گیرد و در خود محصور می کند). لازم به ذکر است که XML بین حروف بزرگ و کوچک تمایز قائل می شود.
فایل XML باید خوش ترکیب (دارای ترکیب بندی صحیح و سازمان یافته) باشد.
یک فایل XML سازمان یافته باید واجد شرایط و ملزومات زیر باشد.
سند XML همیشه با یک prolog آغاز می شود. (programming in logic)
هر تگ بازی باید یک تگ بسته داشته باشد.
تمامی تگ ها به طور کامل تودرتو (nested) هستند.
فایل XML زمانی معتبر محسوب می شود که به طور کامل سازمان یافته بوده و همچنین حامل یک لینک به شِمای XML باشد، به عبارت دیگر اعتبار آن بر اساس شِما سنجیده می شود (بر پایه ی شِما معبتر تلقی می گردد).
مقایسه ی XML با دیگر قالب بندی ها
XML ویژگی هایی دارد که پردازش آن را توسط برنامه های کامپیوتری(به خصوص در مقایسه با فرمت های دودویی و ساخت نایافته) به نسبت سهولت می بخشد.
XML یک متن ساده است.
XML داده را بدون تعریف نحوه ی نمایش آن نشان می دهد.
XML را می توان به وسیله ی XSL به قالب بندی های دیگر نیز تبدیل کرد.
پردازش XML به راحتی توسط تجزیه گرهای متعارف و استاندارد صورت می پذیرد.
فایل های XML سلسله مراتبی (hierarchical) هستند.
از سوی دیگر قالب بندی XML به نسبت طولانی است، به طور مثال در صورتی که داده ی مورد نظر با قالب بندی XML نمایش داده شود، خواهید دید که حجم و اندازه ی داده ی ذکر شده نسبت به دیگر فرمت ها به گونه ای قابل توجه بزرگ تر و طولانی تر است. در عرصه ی اینترنت قالب بندی دودیی (binary) و JSON (javascript object notation = علامت گذاری اشیا در زبان برنامه نویسی جاوا اسکریپت) به طور معمول جایگزین فرمت XML می شوند به خصوص در مواردی که توان عملیاتی داده بسیار دارای اهمیت باشد.
نمونه هایی از XML
آنچه در زیر مشاهده می کنید یک فایل معتبر و درست ترکیب بندی شده ی XML می باشد.
xml version="1.0" ?>
<address>
<name>Lars name>
<street> Test street>
<telephone number="0123" />
address>
المان های تشکیل دهنده ی یک فایل XML
سند XML همیشه با یک prolog آغاز می گردد. prolog وظیفه ی توصیف فایل XML را بر عهده دارد. prolog می تواند بسیار مختصر باشد (برای مثال <?xml version="1.0"?> ) یا حاوی اطلاعات دیگری از جمله رمزگذاری های : <?xml version="1.0"، ="UTF-8"، یا یک="yes" ?> مستقل باشد.
تگی که هیچ محتوایی را دربر نمی گیرد به عنوان یک تگ تهی شناخته می شود، به عنوان مثال<flag/> یک تگ تهی است.
توضیحات در فرمت XML به عنوان <! COMMENT> تعریف و نمایش داده می شوند.
2. پردازش فایل های XML در سیستم اندروید
زبان برنامه نویسی جاوا اسکریپت جهت پردازش فایل های XML، کتابخانه های استاندارد متعددی ارائه می دهد. تجزیه گرهای SAX (Simple API for XML = یک آلگوریتم رویداد محور آنلاین ویژه ی تجزیه یا parse سندهای XML) و DOM (Document Object Model = یک قرداد (convention) محیط متقابل /cross-platform و language independent برای تعامل با اشیإ در سندهای HTML، XHTML و XML) نیز در اندروید موجود می باشند.
API تجزیه گرهای SAX و DOM در اندروید و استاندارد جاوا یکسان می باشد. با این حال، DOM و SAX محدودیت های خود را دارند و از این رو استفاده از آن در اندروید توصیه نمی شود.
Java standard همچنین تجزیه گر STAX را عرضه می کند که البته این پارسر جزئی از محیط اندروید حساب نمی شود.
اندروید برای نوشتن و تجزیه XML، کلاس xmlPullParser را عرضه می کند. پارسر نام برده اگرچه در java standard موجود نمی باشد، و از جهاتی شبیه همان تجزیه کننده ی Stax می باشد.
در محیط اندروید توصیه می کنیم از xmlPullParser استفاده شود. در مقایسه با SAX و DOM دارای رابط برنامه سازی (API) به نسبت ساده تر بوده، همچنین بسیار در عملکرد سریع است. علاوه بر این به حافظه ی کمتری نسبت به رابط برنامه سازی DOM نیاز دارد.
3. مثالی از کاربرد کلاس xmlpullparser
تولید کننده ی اسناد جاوا (Javadoc) نمونه ای از کاربرد این کتابخانه را در مثال زیر نمایش می دهد.
import java.io.IOException;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException.html;
import org.xmlpull.v1.XmlPullParserFactory;
public class SimpleXmlPullApp
{
public static void main (String args[])
throws XmlPullParserException، IOException
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader ("Hello World!"));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
} else if(eventType == XmlPullParser.END_DOCUMENT) {
System.out.println("End document");
} else if(eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag "+xpp.getName());
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
}
}
