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


    گره ها

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

    نوع گره
    [HTML]
    <!DOCTYPE food SYSTEM "food.dtd">
    Document type
    <?xml version="1.0"?>
    Processing instruction
    <drink type="tea">Irani</drink>
    Element
    type="tea"
    Attribute
    Irani
    Text[/HTML]

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

    بمنظور خواندن، ويرايش و يا ايجاد و پردازش يک سند XML ، می بايست از يک پارسر استفاده کرد . پارسر شرکت ماکروسافت، يک عنصر مبتنی بر COM بوده که بهمراه IE نسخه پنج ، ارائه شده است . پس از نصب مرورگر فوق، امکان استفاده از پارسر فراهم می گردد . پارسر MSXML ، دارای امکانات متعدد برنامه نويسی بمنظور استفاده توسط زبانهای زير است :
    • حمايت از جاوااسکريپت VBScript Perl جاوا و ++ C
    • حمايت از استاندارد کنسرسيوم وب و XML DOM
    • حمايت از DTD و معتبر سازی
    مثال : نحوه ايجاد شی Document ، با استفاده جاوااسکريپت ، VBscript و ASP در جدول زير نشان داده شده است :
    [HTML]
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    Javascript
    set xmlDoc = CreateObject("Microsoft.XMLDOM")
    VBscript
    set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
    ASP[/HTML]

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

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

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

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


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

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


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

    [JS]<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>[/JS]


    شی ParseError

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


    تشخيص خطاء و استفاده از شی ParseErrorدر رابطه با وجود يک فايل
    [JS]
    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)
    [/JS]
    خطای مربوط به XML . فرض کنيد يک سند XML که "خوش شکل " نمی باشد، توسط پارسر خوانده شود . کدهای زير نحوه تشخيص و برخورد با خطاء را نشان می دهد :

    تشخيص خطاء و استفاده از شی ParseError در رابطه با سند "خوش شکل "
    [JS]
    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)

    [/JS]

    خصلت های ParseError

    کد خطای بوجود آمده ، برگردانده می شود .
    errorCode
    علت خطای بوجود آمده ،برگردانده می شود .
    reason
    شماره خط خطای بوجود آمده ، برگردانده می شود
    line
    محل بروز خطاء در خط مربوطه را برمی گرداند .
    linePos
    رشته ای که شامل خط مربوط به خطای بوجود آمده است، برگردانده می شود
    srcText
    urlمربوط به سند مستقر سده در حافظه ، بر گردانده می شود .
    url
    محل بروز خطاء در فايل مربوطه، برگردانده می شود .
    filePos


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

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

    حرکت در طول درخت و نمايش element های يک سند XML
    [JS]
    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[/JS]


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

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

    نمايش داده های موجود در يک سند XMLبا استفاده از جاوااسکريپت
    [JS]
    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[/JS]

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

    رنامه زير داده های موجود در يک سند XML را خوانده و آنها را با فرمت Html در خروجی نمايش خواهد داد .
    دستيابی به element ها د ر يک سند XML از طريق نام و بکمک جاوااسکريپت:
    [JS]
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.load("note.xml")
    document.write(xmlDoc.getElementsByTagName("from") .item(0).text)[/JS]



    منبع : راسخون

    پاسخ
    ایجاد موضوع جدید   پاسخ به موضوع  

    کاربرانِ درحال بازدید از این موضوع:   1 مهمان