DOM چيست ؟

DOM)Document Object Model) يک رابط برنامه نويسی برای سندهای XML و Html است . با استفاده از اينترفيس فوق، نحوه دستيابی و انجام پردازش های لازم در رابطه با سند های XML و Html فراهم می گردد . برنامه نويسان با استفاده از DOM ، قادر به ايجاد يک سند ،حرکت در طول ساختار سند، افزودن ، اصلاح و يا حذف المان های يک سند XML و يا Html می باشند . DOM توسط کنسرسيوم وب استاندارد و بمنظور استفاده از طريق زبان های برنامه نويسی متعددی طراحی
دوشنبه، 14 بهمن 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
DOM چيست ؟
DOM چيست ؟
DOM چيست ؟

 

 
DOM)Document Object Model) يک رابط برنامه نويسی برای سندهای XML و Html است . با استفاده از اينترفيس فوق، نحوه دستيابی و انجام پردازش های لازم در رابطه با سند های XML و Html فراهم می گردد . برنامه نويسان با استفاده از DOM ، قادر به ايجاد يک سند ،حرکت در طول ساختار سند، افزودن ، اصلاح و يا حذف المان های يک سند XML و يا Html می باشند . DOM توسط کنسرسيوم وب استاندارد و بمنظور استفاده از طريق زبان های برنامه نويسی متعددی طراحی شده است .

گره ها

برنامه ای با نام پارسر، امکان استقرار يک سند XML در حافظه را فراهم می نمايد . پس از استقرار سند در حافظه ، اطلاعات مربوطه بکمک DOM ، قابل بازيابی و پردازش خواهد بود . DOM ، يک نمايش شبه درختی از يک سند XML را ايجاد می نمايد . المان Document ، دارای بالاترين سطح در درخت ايجاد شده است . المان فوق ، دارای يک و يا چندين فرزند است . يک اينترفيس گره ، امکان خواندن و يا نوشتن المان های خاصی در ساختار درختواره ای يک سند XML را ميسر می نمايد .با استفاده از خصلت ChildNodes مربوط به المان Document و بکارگيری يک حلقه تکرار می توان هر يک از گره ها را انتخاب و در ادامه عمليات مورد نظر در رابطه با آن را انجام داد . پارسر شرکت ماکروسافت (MSXML) ، دارای توابع متفاوت بمنظور حرکت در طول درخت، دستيابی به گره ها بهمراه خصلت مربوطه، درج و حذف گره ها و تبديل ساختار درختی به شکل اوليه XML است . در حال حاضر، سيزده نوع متفاوت گره توسط پارسرشرکت ماکروسافت، حمايت می گردد . جدول زير متداولترين نوع گره ها را نشان می دهد .

مثال

نوع گره

<!DOCTYPE food SYSTEM "food.dtd">

Document type

<?xml version="1.0"?>

Processing instruction

<drink type="tea">Irani</drink>

Element

type="tea"

Attribute

Irani

Text

استفاده از پارسر

بمنظور خواندن، ويرايش و يا ايجاد و پردازش يک سند XML ، می بايست از يک پارسر استفاده کرد . پارسر شرکت ماکروسافت، يک عنصر مبتنی بر COM بوده که بهمراه IE نسخه پنج ، ارائه شده است . پس از نصب مرورگر فوق، امکان استفاده از پارسر فراهم می گردد . پارسر MSXML ، دارای امکانات متعدد برنامه نويسی بمنظور استفاده توسط زبانهای زير است :
• حمايت از جاوااسکريپت VBScript Perl جاوا و ++ C
• حمايت از استاندارد کنسرسيوم وب و XML DOM
• حمايت از DTD و معتبر سازی
مثال : نحوه ايجاد شی Document ، با استفاده جاوااسکريپت ، VBscript و ASP در جدول زير نشان داده شده است :

مثال

تکنولوژی

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

Javascript

set xmlDoc = CreateObject("Microsoft.XMLDOM")

VBscript

set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")

ASP

استقرار يک سند XML در حافظه

کدهای زير نحوه استقرار يک سند XML با نام Test.xml در حافظه را نشان می دهد :

استقرار يک سند XMLدر حافظه

<script language="JavaScript">
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
      xmlDoc.async="false"
      xmlDoc.load("Test.xml")
      // ....... پردازشهای لازم  
</script>

اولين خط در اسکريپت های فوق ، يک نمونه از پارسر XML شرکت ماکروسافت را ايجاد می نمايد . در دومين خط ، به پارسر اعلام می گردد منتظر دريافت کامل سند XML بوده قبل از اينکه پردازش خود را آغاز نمايد . در سومين خط ، به پارسر اعلام شده است که يک سند XML با نام Test.xml را در حافظه مستقر نمايد .

استقرار متن XML در پارسر

کدهای زير، نحوه استقرار يک رشته متن را در پارسر XML نشان می دهد . در مثال فوق از متد LoadXML در مقابل متد load استفاده شده است . از متد loadXML بمنظور استقرار يک رشته متن در پارسر استفاده می گردد .

استقرار يک رشته متن XMLدر حافظه

<script language="JavaScript">
    var text="<note>"
    text=text+"<to>Ali</to><from>Reza</from>"
    text=text+"<heading>Reminder</heading>"
    text=text+"<body>Don't forget me this weekend!</body>"
    text=text+"</note>"
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.loadXML(text)
    // ....... پردازش هایلازم
</script>

شی ParseError

خطای مربوط به فايل : با استفاده از شی ParseError ، می توان از کد ، متن خطاء و حتی شماره خطی که خطاء در آن اتفاق افتاده است ، آگاهی يافت . در برنامه زير پارسر، سعی در استقرار سندی XML در حافظه نموده که وجود خارجی ندارد . پس از تشخيص خطاء ، برخی از خصلت های مربوط به خطاء در خروجی نمايش داده خواهد شد .

تشخيص خطاء و استفاده از شی ParseErrorدر رابطه با وجود يک فايل

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("Test1.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)

خطای مربوط به XML . فرض کنيد يک سند XML که "خوش شکل " نمی باشد، توسط پارسر خوانده شود . کدهای زير نحوه تشخيص و برخورد با خطاء را نشان می دهد :

تشخيص خطاء و استفاده از شی ParseError  در رابطه با سند "خوش شکل "

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note_error.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)

خصلت های ParseError

عملکرد

خصلت

کد خطای بوجود آمده ، برگردانده می شود .

errorCode

علت خطای بوجود آمده  ،برگردانده می شود . 

reason

شماره خط خطای بوجود آمده  ، برگردانده می شود 

line

محل بروز خطاء در خط مربوطه را برمی گرداند .

linePos

رشته ای که شامل خط مربوط به خطای بوجود آمده است،  برگردانده می شود

srcText

urlمربوط به سند مستقر سده در حافظه ،  بر گردانده می شود .

url

محل بروز خطاء در فايل مربوطه،  برگردانده می شود .

filePos

حرکت در طول درخت

يکی از متداولترين روش های بازيابی المان های يک سند XML ، حرکت در طول درخت ( از گره ای به گره ديگر ) و استخراج مقدار متن ذخيره شده بهمراه هر يک از المان ها است . کدهای نوشته شده زير ، امکان حرکت در طول يک درخت XML را فراهم و در ادامه هر يک از المان های سند XML ، در خروجی نمايش داده می شوند ( کدها با استفاده از VBScript نوشته شده اند ) .

حرکت در طول درخت و نمايش المان های يک سند XML

set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(": ")
 document.write(x.text)
next

ايجاد محتويات مبتنی بر Html برای يک سند XML

يکی از مهمترين قابليت های XML ، تمايز و تفکيک سندهای Html از داده های مربوطه است . با استفاده از يک پارسر XML ، موجود در مرورگرها ، يک صفحه وب قادر به ايجاد محتوياتی پويا است . در اين زمينه می توان از پتانسيل های جاوااسکريپت بمنظور توليد و ارائه محتويات پويا نيز استفاده کرد . در همين راستا ، امکان استفاده از ASP برا ی ايجاد محتويات پويا با تاکيد بر نقش سرويس دهنده وب نيز وجود دارد . برنامه زير ، داده های موجود در يک سند XML را خوانده و آنها را با فرمت Html در خروجی نمايش خواهد داد .

نمايش داده های موجود در يک سند XMLبا استفاده از جاوااسکريپت

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from.innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text

دستيابی به المان ها از طريق نام

رنامه زير داده های موجود در يک سند XML را خوانده و آنها را با فرمت Html در خروجی نمايش خواهد داد .

دستيابی به المان ها د ر  يک سند XML  از طريق نام و بکمک  جاوااسکريپت

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write(xmlDoc.getElementsByTagName("from").item(0).text)

 

 ..............................

منبع : http://barnamenevis.org/showthread.php?65619

ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط
موارد بیشتر برای شما
تجلیل از ۵۸ نخبه علمی کشور در شصت‌وچهارمین جایزه البرز
تجلیل از ۵۸ نخبه علمی کشور در شصت‌وچهارمین جایزه البرز
وضعیت موجود وقف و امور خیریه در سوئیس؛ تحلیل آماری بنیادها، هزینه‌ها و مشارکت مردمی
وضعیت موجود وقف و امور خیریه در سوئیس؛ تحلیل آماری بنیادها، هزینه‌ها و مشارکت مردمی
مفهوم وقف و امور خیریه در سوئیس؛ ساختار بنیادها، انجمن‌ها و شرایط عام‌المنفعه بودن
مفهوم وقف و امور خیریه در سوئیس؛ ساختار بنیادها، انجمن‌ها و شرایط عام‌المنفعه بودن
سقوط پهپاد بمب‌گذاری‌شده رژیم صهیونی در جنوب لبنان
play_arrow
سقوط پهپاد بمب‌گذاری‌شده رژیم صهیونی در جنوب لبنان
افشای سند جنگی دشمن به روایت سیمیاری
play_arrow
افشای سند جنگی دشمن به روایت سیمیاری
جابه‌جایی قلعه ۳۶۰ تنی با نیروی ۱۸۰۰ نفر در ژاپن
play_arrow
جابه‌جایی قلعه ۳۶۰ تنی با نیروی ۱۸۰۰ نفر در ژاپن
سند محرمانه‌ای که از اتاق جنگ دشمن لو رفت
play_arrow
سند محرمانه‌ای که از اتاق جنگ دشمن لو رفت
پزشک قلابی که با سرم بیهوشی وارد خانه‌ها می‌شد!
play_arrow
پزشک قلابی که با سرم بیهوشی وارد خانه‌ها می‌شد!
اژه‌ای: نگوییم نمی‌شود بگوییم می‌شود می‌توانیم و انجام می‌دهیم
play_arrow
اژه‌ای: نگوییم نمی‌شود بگوییم می‌شود می‌توانیم و انجام می‌دهیم
وزیرخارجه سابق آمریکا: نتانیاهو به تصویر اسرائیل در آمریکا و جهان ضربه زد
play_arrow
وزیرخارجه سابق آمریکا: نتانیاهو به تصویر اسرائیل در آمریکا و جهان ضربه زد
پوکر لژیونر ایرانی در لیگ مالزی
play_arrow
پوکر لژیونر ایرانی در لیگ مالزی
آزمایش سیستم چتر نجات رزمی و نظامی هند
play_arrow
آزمایش سیستم چتر نجات رزمی و نظامی هند
سعید اسماعیلی بدون دادن حتی یک امتیاز قهرمان شد
play_arrow
سعید اسماعیلی بدون دادن حتی یک امتیاز قهرمان شد
‏ادعای ترامپ: اگر من نبودم ایران اسرائیل را نابود می کرد
play_arrow
‏ادعای ترامپ: اگر من نبودم ایران اسرائیل را نابود می کرد
بی‌ارزش‌ترین ویدیوهایی که در یوتیوب بازدیدهای میلیونی داشته‌اند!
play_arrow
بی‌ارزش‌ترین ویدیوهایی که در یوتیوب بازدیدهای میلیونی داشته‌اند!