میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7...

18
آموزشگاه: تهران- خيابان شريعت ی- با تر از خ ي ابان ملک- جنب بانکدرات صا- ک پ561 - واحد7 آدرس88146323 - 88446780 - 88146330 ن الرحیم الرحم بسم ایل داده آموزشگاه تحل تخصصی ترین مرکز ایرانتابیس در و دیسی برنامه نوی آموزش تجزیه کننده یXML دس افشین رفوآ مدرس : مهن

Transcript of میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7...

Page 1: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

بسم اهلل الرحمن الرحیم

آموزشگاه تحلیل داده

برنامه نویسی و دیتابیس در ایران ترین مرکز تخصصی

XML ی کننده تجزیه آموزش

مدرس : مهندس افشین رفوآ

Page 2: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

XML آموزش تجزیه کننده ی

XMLآموزش تجزیه کننده ی

XML مخفف عبارتExtensible Markup Language .می باشدXML یک فرمت خیلی معروف بوده و متداوال

را xmlبرای اشتراک گذاری داده در اینترنت استفاده می شود. این فصل توضیح می دهد که چگونه فایل

عات الز را از آن استخرا کرد.تجزیه کرده و اطال

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

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

استفاده کنیم. xmlبرای تجزیه ی XMLPullParserقرار است از

ارائه شده xmlمی باشد که مورد عالقه ی شما هستند. به عنوان مثال در xmlولین گا معرفی فیلدهایی در ا

اریم دمای هوا را به دست آوریم.در زیر ما تمایل د

<?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"/>

</country>

Page 3: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

XML – عناصر

دارای مولفه های بسیاری می باشد. در اینجا جدولی را مشاهده می کنید که مولفه های مربوطبه xmlیک فایل

.را تعریف می کند xmlیک فایل

Sr.No

مولفه و توضیح

1

Prolog

شروع می شود. اولین خط که شامل اطالعاتی در مورد یک فایل (prolog)با یک مقدمه xmlیک فایل

است، مقدمه نامیده می شود.

2

Events

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

و متن و غیره. tag، پایان tagشروع داکیومنت، پایان داکیومنت، شروع

3

Text

یک GBدارای یک متن ساده نیز می باشد. به عنوان مثال xmlها، یک فایل tagعالوه با رویداد ها و

می باشد. country tagمتن در

4

Attributes

هستند، مانند مقدار وغیره. tagویژگی ها پراپرتی های اضافه ای از یک

XML – تجزیه

ایجاد خواهیم کرد اما به خاطر انجا این کار ابتدا آبجکت XMLPullParserدر مرحله بعد، یک آبجکت

XmlPullParserFactory ایجاد کرده و سپس روشnewPullParser() را فرامی خوانیم تاXMLPullParser را

.ترکیب آن در زیر ارائه شده است ایجاد کنیم.

Page 4: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

private XmlPullParserFactory xmlFactoryObject =

XmlPullParserFactory.newInstance();

private XmlPullParser myparser =

xmlFactoryObject.newPullParser();

می باشد، که می تواند یک xmlمی شود که دارای XmlPullParserگا بعدی شامل مشخص کردن فایلی برای

.را می توانید مشاهده کنیدیب آن است. ترک streamبا که در ان مورد یک streamفایل یا یک

myparser.setInput(stream, null);

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

دارای یک ساختار مجزا برای تجزیه ی هر فایل 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();

}

Page 5: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

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

را گزارش می دهد و از آنجایی که ما عالقه مند به اندازه گیری tagنا getName، و غیره. روش tagشروع

را چک می می مربوط به دما داشته باشیم، در وضعیت مشروط فقط آن tagدمای هوا هستیم بناباین اگر یک

دما را گزارش دهد. tagرا فرا می خوانیم تا به ما مقدار getAttributeValueکنیم، و روش

ه در زیر توسط این گروه ارائه می شوند ک xmlعالوه بر این روش ها، روش های دیگری برای تجزیه ی بهتر

.لیست آنها را می بینید

Sr.No

Method & description

1

getAttributeCount()

موجود را گزارش می دهد. start tagاین روش تعداد ویژگی های

2

getAttributeName(int index)

این روش نا ویژگی مشخص شده توسط شاخص مقدار را گزارش می دهد.

3

getColumnNumber()

.0گزارش می دهد، شروع از این روش تعداد گزارش های مربوط به تعداد ستون های موجود را

4

getDepth()

این روش آخرین عمق مربوط به عنصر را گزارش می دهد.

5

getLineNumber()

.1این روش تعداد آخرین خطوط را گزارش می دهد، شروع از عدد

6

getNamespace()

فضانا های مربوط به آخرین عنصر را گزارش می دهد. URIاین روش

7

getPrefix()

این روش پیشوند مربوط به عنصر موجود را گزارش می دهد.

8

getName()

را گزارش می دهد. tagاین روش نا

Page 6: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

9

getText()

ین روش متن مربوط به عنصر خاص را گزارش می دهد.ا

10

isWhitespace()

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

مثال

را توضیح می دهد. این مثال یک برنامه ی آب MLPullParserدر اینجا مثالی را می بینید که استفاده از گروه

یه کنید و تجز google weather apiرا از طریق XMLهوایی پایه ایجاد می کند که به شما اجازه می دهد تا

نتایج را نشان می دهد.

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

Steps Description

1

استفاده خواهید کرد و آن را با Eclipse IDEبرای ایجاد یک برنامه ی اندروید از

نا گذاری کنید. زمان com.example.xmlparser تحت بسته ی XMLParserعنوان

در آخرین ورژن Compile Withو Target SDKایجاد این برنامه مطمئن شوید که

Android SDK هستند تا از سطوح باالترAPI .استفاده کنید

را برای افزودن کد الز تغییر دهید. src/MainActivity.javaفایل 2

3 res/layout/activity_main را برای افزودن مولفه هایXML .مربوطه تغییر دهید

4 res/values/string.xml .را برای افزودن مولفه های رشته ی الز تغییر دهید

را XMLایجاد کنید تا داده src/HandleXML.javaیک فایل جاوای جدید تحت 5

برگردانده و تجزیه کنید.

6 AndroidManifest.xml .را برای افزودن اجازه ی اینترنت تغییر دهید

برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن 7

Page 7: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

نصب کنید و نتایج را بررسی کنید.

.فعالیت اصلی را مشاهده می کنید در زیر محتوای تغییر یافته ی فایل

src/com.example.xmlparser/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.graphics.Typeface;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

com.example.sairamkrishna.myapplication

public class MainActivity extends ActionBarActivity {

EditText ed1,ed2,ed3,ed4,ed5;

private String url1 =

"http://api.openweathermap.org/data/2.5/weather?q=";

private String url2 = "&mode=xml";

private HandleXML obj;

Button b1;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Page 8: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

b1=(Button)findViewById(R.id.button);

ed1=(EditText)findViewById(R.id.editText);

ed2=(EditText)findViewById(R.id.editText2);

ed3=(EditText)findViewById(R.id.editText3);

ed4=(EditText)findViewById(R.id.editText4);

ed5=(EditText)findViewById(R.id.editText5);

b1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String url = ed1.getText().toString();

String finalUrl = url1 + url + url2;

ed2.setText(finalUrl);

obj = new HandleXML(finalUrl);

obj.fetchXML();

while(obj.parsingComplete);

ed2.setText(obj.getCountry());

ed3.setText(obj.getTemperature());

ed4.setText(obj.getHumidity());

ed5.setText(obj.getPressure());

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if

it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

Page 9: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

// automatically handle clicks on the Home/Up button, so

long

// as you specify a parent activity in

AndroidManifest.xml.

int id = item.getItemId();

//noinspection SimplifiableIfStatement

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

.می باشد src/com.example.xmlparser/HandleXML.javaدر اینجا محتوای

package com.example.sairamkrishna.myapplication;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserFactory;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

/**

* Created by Sairamkrishna on 4/11/2015.

*/

public class HandleXML {

private String country = "county";

private String temperature = "temperature";

private String humidity = "humidity";

private String pressure = "pressure";

private String urlString = null;

private XmlPullParserFactory xmlFactoryObject;

public volatile boolean parsingComplete = true;

public HandleXML(String url){

Page 10: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

this.urlString = url;

}

public String getCountry(){

return country;

}

public String getTemperature(){

return temperature;

}

public String getHumidity(){

return humidity;

}

public String getPressure(){

return pressure;

}

public void parseXMLAndStoreIt(XmlPullParser myParser) {

int event;

String text=null;

try {

event = myParser.getEventType();

while (event != XmlPullParser.END_DOCUMENT) {

String name=myParser.getName();

switch (event){

case XmlPullParser.START_TAG:

break;

case XmlPullParser.TEXT:

text = myParser.getText();

break;

case XmlPullParser.END_TAG:

if(name.equals("country")){

country = text;

}

Page 11: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

else if(name.equals("humidity")){

humidity =

myParser.getAttributeValue(null,"value");

}

else if(name.equals("pressure")){

pressure =

myParser.getAttributeValue(null,"value");

}

else if(name.equals("temperature")){

temperature =

myParser.getAttributeValue(null,"value");

}

else{

}

break;

}

event = myParser.next();

}

parsingComplete = false;

}

catch (Exception e) {

e.printStackTrace();

}

}

public void fetchXML(){

Thread thread = new Thread(new Runnable(){

@Override

public void run() {

try {

URL url = new URL(urlString);

HttpURLConnection conn =

(HttpURLConnection)url.openConnection();

Page 12: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

conn.setReadTimeout(10000 /* milliseconds */);

conn.setConnectTimeout(15000 /* milliseconds */);

conn.setRequestMethod("GET");

conn.setDoInput(true);

conn.connect();

InputStream stream = conn.getInputStream();

xmlFactoryObject =

XmlPullParserFactory.newInstance();

XmlPullParser myparser =

xmlFactoryObject.newPullParser();

myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES,

false);

myparser.setInput(stream, null);

parseXMLAndStoreIt(myparser);

stream.close();

}

catch (Exception e) {

e.printStackTrace();

}

}

});

thread.start();

}

}

می باشد. res/layout/activity_main.xml مربوط به xmlدر اینجا محتوای تغییریافته ی

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

Page 13: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="XML Fetch"

android:id="@+id/textView"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textSize="30dp" />

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Tutorials Point"

android:id="@+id/textView2"

android:layout_below="@+id/textView"

android:layout_centerHorizontal="true"

android:textSize="35dp"

android:textColor="#ff16ff01" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText"

android:hint="Location"

Page 14: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

android:layout_below="@+id/textView2"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_marginTop="61dp"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true" />

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Weather "

android:id="@+id/button"

android:layout_below="@+id/editText"

android:layout_centerHorizontal="true" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText2"

android:layout_below="@+id/button"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignRight="@+id/editText"

android:layout_alignEnd="@+id/editText"

android:text="Currency" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

Page 15: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

android:id="@+id/editText3"

android:layout_below="@+id/editText2"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true"

android:text="Temp" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText4"

android:layout_below="@+id/editText3"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignRight="@+id/editText3"

android:layout_alignEnd="@+id/editText3"

android:text="Humidity" />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText5"

android:layout_below="@+id/editText4"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"

android:layout_alignParentRight="true"

android:layout_alignParentEnd="true"

Page 16: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

android:text="Pressure" />

</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" >

<uses-permission android:name="android.permission.INTERNET"/>

<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>

خود را که تازه تغییر یافته، اجرا کنیم. فرض می کنیم که شما در هنگا XMLParserاجازه بدهید برنامه ی

ژه یکی از فایل هایفعالیت پرو Eclipseخود را ایجاد کرده اید. برای اجرای برنامه از AVDانجا تنظیمات محیط

شما نصب خواهد کرد و AVDبرنامه را روی Eclipseتولبار کلیک کنید. Runآیکنی خود را باز کنید و روی

Page 17: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

زیر را نمایش خواهد emulatorاگر همه چیز در مورد تنظیمات و برنامه درست پیش رفته باشد، پنجره ی

داد.

می باشد. به عنوان مثال من لندن locationکاری که اکنون باید انجا دهید وارد کردن هر موقعیتی در فیلد

نممایش AVDرا فشار دهید که صفحه ی زیر روی weatherرا وارد کرد . پس از وارد کردن مکان، دکمه ی

داده خواهد شد.

Page 18: میحرلا نمحرلا للها مسب › Files › Articles › 31new android.pdf · 7 دحاو - 561 کلاپ - تارداص کناب بنج - کلم نابايخ زا رت

7 واحد - 561 پالک - صادرات بانک جنب - ملک ابانيخ از تر باال - یشريعت خيابان - تهران : آموزشگاه آدرس 88146323 - 88446780 - 88146330

تماس برقرار خواهد کرد و Google Weather APIرا فشار می دهید برنامه با weatherوقتی دکمه ی

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

گزارش داده خواهد شد.

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

تبدیل کنید.