آموزش XML Parser در برنامه نویسی اندروید

3 سال پیش

آموزش XML Parser در برنامه نویسی اندروید

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد آموزش XML Parser در برنامه نویسی اندروید صحبت خواهیم کرد.

 

XML مخفف Extensible Mark-up Language است. XML یک قالب بسیار محبوب است و معمولاً برای به اشتراک گذاری داده ها در اینترنت استفاده می شود. در این درس نحوه تجزیه فایل XML و استخراج اطلاعات لازم از آن توضیح داده شده است.

اندروید سه نوع تجزیه کننده XML را ارائه می دهد که عبارتند از DOM ، SAX و XMLPullParser.

در میان همه آنها  XMLPullParser را توصیه می شود زیرا کارآمد و آسان برای استفاده است.

نابراین ما می خواهیم از XMLPullParser برای تجزیه XML استفاده کنیم.

اولین قدم شناسایی زمینه های داده XML مورد علاقه شماست.

به عنوان مثال. در XML آورده شده در زیر ما علاقه مند به دریافت فقط temperature هستیم.

<?xml version="1.0"?>
<current>
   
   <city id="2643743" name="London">
      <coord lon="-0.12574" lat="51.50853"/>
      <country>GB</country>
      <sun rise="2013-10-08T06:13:56" set="2013-10-08T17:21:45"/>
   </city>
   
   <temperature value="289.54" min="289.15" max="290.15" unit="kelvin"/>
   <humidity value="77" unit="%"/>
   <pressure value="1025" unit="hPa"/>
</current>

 

عناصر XML 

یک فایل xml از اجزای بسیاری تشکیل شده است. در اینجا تعریف اجزای یک فایل XML و شرح آنها است.

  • Prolog

یک فایل XML با یک prolog شروع می شود. اولین خطی که شامل اطلاعات مربوط به یک فایل است، پرولوگ است

  • Events

یک فایل XML رویدادهای زیادی دارد. رویداد می تواند اینگونه باشد. سند شروع می شود، سند به پایان می رسد، شروع تگ، پایان تگ و متن

  • Text

به غیر از تگ ها و رویدادها، و فایل xml نیز حاوی متن ساده است.

  • Attributes

ویژگی های اضافی یک تگ مانند مقدار و غیره هستند

XML – Parsing

در مرحله بعدی ، ما شی object XMLPullParser را ایجاد خواهیم کرد، اما برای ایجاد آن ابتدا شی object XmlPullParserFactory را ایجاد می کنیم و سپس برای ایجاد XMLPullParser متد ()newPullParser آن را فراخوانی می کنیم. نحو آن در زیر آورده شده است:

private XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance();
private XmlPullParser myparser = xmlFactoryObject.newPullParser();

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

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

myparser.setInput(stream, null);

آخرین مرحله تجزیه XML است. یک فایل XML از رویدادها ، نام ، متن و غیره AttributesValue  تشکیل شده است.

بنابراین XMLPullParser عملکرد جداگانه ای برای تجزیه هر یک از اجزای پرونده XML دارد. نحو آن در زیر آورده شده است:

int event = myParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT)  {
   String name=myParser.getName();
   switch (event){
      case XmlPullParser.START_TAG:
      break;
      
      case XmlPullParser.END_TAG:
      if(name.equals("temperature")){
         temperature = myParser.getAttributeValue(null,"value");
      }
      break;
   }		 
   event = myParser.next(); 					
}

 

به غیر از این متدها، متدهای دیگری نیز برای تجزیه بهتر فایلهای XML توسط این کلاس ارائه شده است. این متد ها در زیر ذکر شده است:

  • ()getAttributeCount 

این متد فقط تعداد ویژگی های تگ شروع فعلی را برمی گرداند

  • (getAttributeName(int index

این متد نام ویژگی مشخص شده با مقدار ایندکس را برمی گرداند

  • ()getColumnNumber 

این متد مقدار ستون فعلی را برمی گرداند، از ۰ شروع می شود.

  • ()getDepth 

این متد عمق فعلی عنصر را برمی گرداند.

  • ()getLineNumber 

شماره خط فعلی را با شروع از ۱ برمی گرداند.

  • ()getNamespace 

این متد نام فضای URI عنصر فعلی را برمی گرداند.

  • ()getPrefix 

این متد پیشوند عنصر فعلی را برمی گرداند

  • ()getName 

این متد نام تگ را برمی گرداند

  • ()getText 

این متد متن را برای آن عنصر خاص برمی گرداند

  •  ()isWhitespace

این متد بررسی می کند که آیا رویداد فعلی TEXT فقط نویسه های فضای سفید را شامل می شود یا خیر.

 

مثال

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

برای آزمایش این مثال ، می توانید آن را روی دستگاه واقعی یا شبیه ساز اجرا کنید.

شرح مراحل 

۱- شما برای ایجاد یک برنامه اندروید تحت یک پکیج com.example.sairamkrishna.myapplication از Android studio استفاده خواهید کرد.
۲- برای اضافه کردن کد لازم، فایل src / MainActivity.java را تغییر دهید.
۳- res / layout / activity_main را تغییر دهید تا مولفه های XML مربوطه اضافه شود
۴- یک پرونده XML جدید در Assets Folder / file.xml ایجاد کنید
۵- AndroidManifest.xml را تغییر دهید تا اجازه اینترنت لازم را اضافه کنید
۶- برنامه را اجرا کنید و دستگاه اندرویدی در حال اجرا را انتخاب کنید و برنامه را روی آن نصب کنید و نتایج را بررسی کنید

در زیر محتوای پرونده فعالیت اصلی تغییر یافته MainActivity.java است

package com.example.sairamkrishna.myapplication;

import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
   TextView tv1;

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      tv1=(TextView)findViewById(R.id.textView1);
        
      try {
         InputStream is = getAssets().open("file.xml");

         DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
         DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
         Document doc = dBuilder.parse(is);

         Element element=doc.getDocumentElement();
         element.normalize();

         NodeList nList = doc.getElementsByTagName("employee");
            
         for (int i=0; i<nList.getLength(); i++) {

            Node node = nList.item(i);
            if (node.getNodeType() == Node.ELEMENT_NODE) {
               Element element2 = (Element) node;
               tv1.setText(tv1.getText()+"\nName : " + getValue("name", element2)+"\n");
               tv1.setText(tv1.getText()+"Surname : " + getValue("surname", element2)+"\n");
               tv1.setText(tv1.getText()+"-----------------------");
            }
         }
            
      } catch (Exception e) {e.printStackTrace();}

   }
    
   private static String getValue(String tag, Element element) {
      NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
      Node node = nodeList.item(0);
      return node.getNodeValue();
   }

}

در زیر محتوای Assets / file.xml آمده است.

<?xml version="1.0"?>
<records>
   <employee>
      <name>Sairamkrishna</name>
      <surname>Mammahe</surname>
      <salary>50000</salary>
   </employee>
    
   <employee>
      <name>Gopal </name>
      <surname>Varma</surname>
      <salary>60000</salary>
   </employee>
    
   <employee>
      <name>Raja</name>
      <surname>Hr</surname>
      <salary>70000</salary>
   </employee>
    
</records>

در زیر محتوای اصلاح شده xml res / layout / activity_main.xml آمده است

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity">

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" />
</RelativeLayout>

در زیر محتوای فایل AndroidManifest.xml آمده است.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      
      </activity>
   
   </application>
</manifest>

بیایید برنامه را اجرا کنیم. من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

 

منبع.

  1. نگاهی کلی به برنامه نویسی اندروید
  2. تنظیمات محیط  در برنامه نویسی اندروید
  3. معماری برنامه نویسی اندروید
  4. اجزای برنامه در برنامه نویسی اندروید
  5. Hello World در برنامه نویسی اندروید
  6. سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
  7. فعالیت در برنامه نویسی اندروید
  8. سرویس در برنامه نویسی اندروید
  9. گیرنده های پخش در برنامه نویسی اندروید
  10. ارائه دهنده محتوا در برنامه نویسی اندروید
  11. قطعات در برنامه نویسی اندروید
  12. Intent و فیلتر در برنامه نویسی اندروید
  13. طرح بندی رابط کاربری در برنامه نویسی اندروید
  14. کنترل های رابط کاربری در برنامه نویسی اندروید
  15. مدیریت رویدادها در برنامه نویسی اندروید
  16. استایل و تم ها در برنامه نویسی اندروید
  17. اجزای سفارشی در برنامه نویسی اندروید
  18. کشیدن و رها کردن در برنامه نویسی اندروید
  19. نوتیفیکیشن ها در برنامه نویسی اندروید
  20. سرویس های مبتنی بر مکان در برنامه نویسی اندروید
  21. ارسال ایمیل در برنامه نویسی اندروید
  22. ارسال پیامک در برنامه نویسی اندروید
  23. تماس های تلفنی در برنامه نویسی اندروید
  24. انتشار برنامه اندروید
  25. آموزش Alert Dialog در برنامه نویسی اندروید
  26. انیمیشن در برنامه نویسی اندروید
  27. ضبط صدا در برنامه نویسی اندروید
  28. مدیریت صدا در برنامه نویسی اندروید
  29. آموزش Auto Complete در برنامه نویسی اندروید
  30. بهترین شیوه ها در برنامه نویسی اندروید
  31. بلوتوث در برنامه نویسی اندروید
  32. استفاده از دوربین در برنامه نویسی اندروید
  33. کلیپ بورد در برنامه نویسی اندروید
  34. فونت سفارشی در برنامه نویسی اندروید
  35. پشتیبان گیری از داده ها در برنامه نویسی اندروید
  36.  ابزارهای توسعه دهنده در برنامه نویسی اندروید
  37. آموزش شبیه ساز در برنامه نویسی اندروید
  38. اتصال به فیس بوک در برنامه نویسی اندروید
  39. حرکات لمسی در برنامه نویسی اندروید
  40. آموزش گوگل مپ در برنامه نویسی اندروید
  41. افکت های تصویر در برنامه نویسی اندروید
  42. Image Switcher در برنامه نویسی اندروید
  43. حافظه داخلی در برنامه نویسی اندروید
  44. آموزش کار با JetPlayer در برنامه نویسی اندروید
  45. JSON Parser در برنامه نویسی اندروید
  46. ارتباط با LinkedIn در برنامه نویسی اندروید
  47. نوار پیشرفت Spinner در برنامه نویسی اندروید
  48. بومی سازی در برنامه نویسی اندروید
  49. صفحه Login در برنامه نویسی اندروید
  50. MediaPlayer در برنامه نویسی اندروید
  51. Multitouch در برنامه نویسی اندروید
  52. Navigation در برنامه نویسی اندروید
  53. اتصال به اینترنت در برنامه نویسی اندروید
  54. NFC در برنامه نویسی اندروید
  55. PHP و MYSQL در برنامه نویسی اندروید
  56. Progress Circle دربرنامه نویسی اندروید
  57. Progress Bar در برنامه نویسی اندروید
  58. Push Notification در برنامه نویسی اندروید
  59. RenderScript در برنامه نویسی اندروید
  60. RSS Reader در برنامه نویسی اندروید
  61. Screen cast در برنامه نویسی اندروید
  62. SDK Manager در برنامه نویسی اندروید
  63. سنسورها در برنامه نویسی اندروید
  64. Session در برنامه نویسی اندروید
  65. Shared Preferences در برنامه نویسی اندروید
  66. پروتکل SIP در برنامه نویسی اندروید
  67. Spelling Checker در برنامه نویسی اندروید
  68. پایگاه داده SQLite در برنامه نویسی اندروید
  69. Support Library در برنامه نویسی اندروید
  70. تست برنامه های اندروید
  71. قابلیت متن به گفتار در برنامه نویسی اندروید
  72. TextureView در برنامه نویسی اندروید
  73. اتصال به توییتر در برنامه نویسی اندروید
  74. طراحی رابط کاربری در برنامه نویسی اندروید
  75. الگوهای رابط کاربری در برنامه نویسی اندروید
  76. تست رابط کاربری در برنامه نویسی اندروید
  77. آموزش WebView در برنامه نویسی اندروید
  78. آموزش wifi در برنامه نویسی اندروید
  79. آموزش ویجت در برنامه نویسی اندروید
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه