در این قسمت سعی داریم کار با xml را توضیح دهیم در قسمت قبل کمی با xml آشنا شدیم برای شروع این قسمت شما باید حتما درس قسمت قبل را کامل مطالعه کنید و کمی هم بیشتر از زبان xml آگاهی پیدا کنید هر چند سعی می کنم لابه لای مطالب کمی توضیح بدم ولی اصل موضوع javascript است نه xml
ساخت سند xml در browser ها
در browser های مختلف این سند با اسمهای متفاوتی قرار داده شده خوشبتخانه امروزه همه ی browser ها دارای سند های dom و xml هستند و برای استفاده از آنها کافی است اسم آنها را صدا کنیم
بمنظور ايجاد و پردازش يک سند XML ، می بايست از يک پارسر استفاده کرد . پارسر شرکت ماکروسافت، يک عنصر مبتنی بر COM بوده که بهمراه IE نسخه پنج ، ارائه شده است برای browser های دیگر متفاوت است فعلا با IE کار داریم خود این پارسر هم سندهای متفاوتی دارد
حال با استفاده از javascript یک سند xml ایجاد می کنیم
کد:
function createDocument()
{
//Temporary DOM object.
var xmlDoc;
//Create the DOM object for IE
if (window.ActiveXObject)
{
var versions =
[
"Msxml2.DOMDocument.6.0",
"Msxml2.DOMDocument.3.0"
];
for (var i = 0; i < versions.length; i++)
{
try
{
xmlDoc = new ActiveXObject(versions[i]);
return xmlDoc;
}
catch (error)
{
//do nothing here
}
}
}
//no version was found; return null
return null;
}
در کد بالا ما ورژن های مختلف را در یک حلقه قرار دادیم و بوسیله try catch ورژن درست را انتخاب می کنیم
در کل ما می توانستیم به راحتی از کد زیر استفاده کنیم
کد:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
ولی برای حرفه ای تر شدن کار از کد بالا استفاده کردیم حالا برای ساخت یک سند کافی است که تابع خودمان را صدا کنیم
کد:
var xmlDoc = createDocument();
xmlDoc.async = false; //Download XML file first, then load rest of page.
xmlDoc.load("myfile.xml");
کد خط دوم همانطور می بینید این قابلیت را ایجاد کرده که اول کد xml برای کاربر دانلود شود بد کل صفحه برای او نشان داده شود یا بر عکس که معمولا false قرار می دن که اگر هر مشکلی به وجود آمد صفحه برای کاربر نمایش داده شود
در خط سوم هم که ما فایل xml خود را در سند ساخته شد به وسیله ی متد load فراخوانی می کنیم
ساخت سند xml در firefox و opera
برای ساخت سند xml در این 2 browser از کد زیر استفاده می کنیم
کد:
var xmlDoc = document.implementation.createDocument("","",null);
xmlDoc.load("myfile.xml");
حالا با این تفاصیر تابع createdocument را کامل می کنیم
کد:
function createDocument()
{
//Temporary DOM object.
var xmlDoc;
//Create the DOM object for IE
if (window.ActiveXObject)
{
var versions =
[
"Msxml2.DOMDocument.6.0",
"Msxml2.DOMDocument.3.0"
];
for (var i = 0; i < versions.length; i++)
{
try
{
xmlDoc = new ActiveXObject(versions[i]);
return xmlDoc;
}
catch (error)
{
//do nothing here
}
}
}
//Create the DOM for Firefox and Opera
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument("","",null);
return xmlDoc;
}
//no version was found; return null
return null;
}
حالا با این مطالبی که یاد گرفتیم یک مثال حل کنیم
ابتدا یک سند xml شامل روز های هفته درست کنیم
به صورت زیر
کد:
<?xml version=”1.0”?>
<messages>
<daily>Today is Sunday.</daily>
<daily>Today is Monday.</daily>
<daily>Today is Tuesday.</daily>
<daily>Today is Wednesday.</daily>
<daily>Today is Thursday.</daily>
<daily>Today is Friday.</daily>
<daily>Today is Saturday.</daily>
</messages>
این سند را به اسم motd.xml ذخیره می کنیم
حالا بریم سراغ page خودمان
خوب تابعی که در بالا ساختیم را ابتدا وارد صفحه می کنیم
کد:
<html>
<head>
<title>Message of the Day</title>
<script type="text/javascript">
function createDocument()
{
//Temporary DOM object.
var xmlDoc;
//Create the DOM object for IE
if (window.ActiveXObject)
{
var versions =
[
"Msxml2.DOMDocument.6.0",
"Msxml2.DOMDocument.3.0"
];
for (var i = 0; i < versions.length; i++)
{
try
{
xmlDoc = new ActiveXObject(versions[i]);
return xmlDoc;
}
catch (error)
{
//do nothing here
}
}
}
//Create the DOM for Firefox and Opera
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument("","",null);
return xmlDoc;
}
//no version was found; return null
return null;
}
خوب حالا باید یک تابع بنویسیم که سند مارا فرا خوانی کرده و ازش استفاده کنه
کد:
function getDailyMessage()
{
خوب حالا با توجه به اسم تگمون در سند xml آن را داخل یک متغییر قرار می دهیم
کد:
var messages = xmlDoc.getElementsByTagName("daily");
حالا از تابع date استفاده می کنیم و روز هفته را با آن پیدا می کنیم یادتان باشد روز هفته در اینجا از یک شنبه شروع شده
کد:
var dateobj = new Date();
var today = dateobj.getDay();
حالا که روز هفته را بدست آوردیم حالا میایم به همان ترتیب عددی روز را از سند فرا خوانی می کنیم
کد:
return messages[today].firstChild.nodeValue;
پس تابع ما به شکل زیر شد
کد:
function getDailyMessage()
{
//Get the node list of <daily/> elements.
var messages = xmlDoc.getElementsByTagName("daily");
//Create a date object.
var dateobj = new Date();
//And get today’s day.
var today = dateobj.getDay();
//Return the message.
return messages[today].firstChild.nodeValue;
}
حالا باید توی تگ body یک div بسازیم و سند را در آن load کنیم و نتیجه تابع getDailyMessage()
را در آن نشان دهیم
کد:
<div id="messageContainer"></div>
<script type="text/javascript">
//Create the DOM object
var xmlDoc = createDocument();
//We’ll load it in synchronous mode.
xmlDoc.async = false;
//Load the XML file
xmlDoc.load("motd.xml");
document.getElementById("messageContainer").innerHTML = getDailyMessage();
</script>
خوب این هم کل فایل html ما
کد:
<html>
<head>
<title>Message of the Day</title>
<script type="text/javascript">
function createDocument()
{
//Temporary DOM object.
var xmlDoc;
//Create the DOM object for IE
if (window.ActiveXObject)
{
var versions =
[
"Msxml2.DOMDocument.6.0",
"Msxml2.DOMDocument.3.0"
];
for (var i = 0; i < versions.length; i++)
{
try
{
xmlDoc = new ActiveXObject(versions[i]);
return xmlDoc;
}
catch (error)
{
//do nothing here
}
}
}
//Create the DOM for Firefox and Opera
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument("","",null);
return xmlDoc;
}
//no version was found; return null
return null;
}
//Gets the message from the XML file
function getDailyMessage()
{
//Get the node list of <daily/> elements.
var messages = xmlDoc.getElementsByTagName("daily");
//Create a date object.
var dateobj = new Date();
//And get today’s day.
var today = dateobj.getDay();
//Return the message.
return messages[today].firstChild.nodeValue;
}
</script>
</head>
<body>
<div id="messageContainer"></div>
<script type="text/javascript">
//Create the DOM object
var xmlDoc = createDocument();
//We’ll load it in synchronous mode.
xmlDoc.async = false;
//Load the XML file
xmlDoc.load("motd.xml");
document.getElementById("messageContainer").innerHTML = getDailyMessage();
</script>
</body>
</html>
دیدین زیادم سخت نبود
موفق باشید
_________________ عمار پتکی
در نبود آنچه که من نیستم, آنچه که هستم نیست
آنگاه که نمادی از امید در فنجان قهوه ات نمی بینی وآنگاه که در طالع این ماهت نیز خبری از معجزه نیست بدان که خداوند همه چیز را به دست خودت سپرده تا بهترين را به ارمغان بياوري
تشکرها از این تاپیک
melisa(چهارشنبه 28 اسفند 1387 - 17:11), Calm از این تاپیک تشکر میکنم
مشاهده موضوع بعدی مشاهده موضوع قبلی
شما نمی توانید در این بخش موضوع جدید پست کنید شما نمی توانید در این بخش به موضوعها پاسخ دهید شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید شما نمی توانید موضوع های خودتان را در این بخش حذف کنید شما نمی توانید در این بخش رای دهید شما نمیتوانید به نوشته های خود فایلی پیوست نمایید شما نمیتوانید فایلهای پیوست این انجمن را دریافت نمایید
:: DpiGuide.Com Forums ::
تمام زمانها بر حسب GMT + 3.5 Hours میباشند