تقدم هذه المقالة بشكل أساسي الاحتياطات عند استخدام MSXML2.DOMDocument لمعالجة بيانات XML في asp. تقدم هذه المقالة 4 مشكلات تحتاج إلى الاهتمام، ويمكن للأصدقاء المحتاجين الرجوع إلى ما يلي
عندما يستخدم asp MSXML2.DOMDocument لتحميل ملفات xml على الشبكة، يجب عليك الانتباه إلى الإعدادات قبل استدعاء طريقة التحميل:
انسخ رمز الكود كما يلي:oXML.setProperty ServerHTTPRequest، صحيح
أي أنه إذا تم تمكين طلب ServerHTTPRequest، فلن يحدث خطأ في النظام: -2146697209.
عند استخدام مكون MSXML2.DOMDocument في asp، عليك الانتباه إلى المواقف الأربعة التالية:
انسخ رمز الكود كما يلي:<%
خافت oXML، oXMLError، ReturnValue، x
تعيين oXML = Server.CreateObject(MSXML2.DOMDocument)
قم بتعيين ما إذا كان DOMDocument يقوم بتحميل ملفات xml بشكل غير متزامن أو بشكل متزامن
oXML.async = false'==========A
' غرض الإعداد: صواب/خطأ، للإشارة إلى ما إذا كان سيتم استخدام مكون ServerXMLHTTP الآمن للخادم لتحميل مستندات xml
oXML.setProperty ServerHTTPRequest، صحيح'==========B
'قم بتحميل ملف xml للشبكة عبر HTTP
ReturnValue = oXML.Load(http://localhost/asp/ServerXML.xml)'==========C
"أو قم بتحميل ملف xml المحلي الخاص بالخادم
'ReturnValue = oXML.Load(d:/test.xml)'==========D
' اطبع القيمة المرجعة لـ DOMDocument.load:
Response.write نتيجة أسلوب التحميل هي = & ReturnValue & <br>
%>
الحالة الأولى (تحميل مستند فارغ):
بشكل افتراضي، تكون السمة غير المتزامنة لكائن DOMDocument هي TRUE، مما يعني أنه تم تحميله بشكل غير متزامن. ولا يتم استخدام مكون ServerXMLHTTP عند التحميل. أي قم بالتعليق على السطرين A وB في الكود أعلاه.
انسخ رمز الكود كما يلي:'oXML.async = false'==========أ
'oXML.setProperty ServerHTTPRequest، صحيح'==========B
في هذا الوقت، سيكون التحميل ناجحا. قيمة الإرجاع ستكون TRUE. لكن مستند XML الذي تم تحميله في DOMDocument فارغ! بمعنى آخر، القيمة TRUE التي يتم إرجاعها بواسطة طريقة التحميل هي عبارة عن غطاء! تبدو النتيجة كما يلي: يجب على المبرمجين توخي الحذر في هذه الحالة! على الرغم من أن XML لا يُبلغ عن أي أخطاء، وتشير طريقة التحميل أيضًا إلى النجاح، إلا أن سمة XML الخاصة بـ DOM فارغة.
الحالة الثانية (سبب الخطأ: -2146697209):
إذا قمت بتعريف السمة غير المتزامنة بشكل صريح إلى FALSE، فسيتم تحميل مستند XML بشكل متزامن. ولا يتم استخدام مكون ServerXMLHTTP عند التحميل. أي قم بالتعليق فقط على السطر B في الكود أعلاه.
انسخ رمز الكود كما يلي:oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest، صحيح'==========B
ثم سوف تواجه الفشل! قيمة الإرجاع ستكون خاطئة. سبب الخطأ هو: -2146697209 - لا توجد بيانات متاحة للمورد المطلوب. بمعنى آخر، لن ينجح التحميل المتزامن لموارد XML على الإنترنت! !
الحالة الثالثة (غير مسموح):
إذا كانت السمة غير المتزامنة هي TRUE، فسيتم تحميل مستند XML بشكل غير متزامن. واستخدم مكون ServerXMLHTTP عند التحميل. أي قم بتمكين السطر B في الكود أعلاه. قم بالتعليق على السطر A من التعليمات البرمجية.
انسخ رمز الكود كما يلي:'oXML.async = false'==========أ
oXML.setProperty ServerHTTPRequest، صحيح'==========B
تم الإبلاغ عن خطأ! لاحظ أن استخدام مكونات SXH لتحميل مستندات XML بشكل غير متزامن غير مسموح به! وصف الخطأ هو: -1072897486 - لا يمكن استخدام خاصية ServerHTTPRequest عند تحميل مستند بشكل غير متزامن وهي مدعومة فقط على نظام التشغيل Windows NT 4.0 والإصدارات الأحدث.
الحالة الرابعة (الاستخدام الصحيح):
إذا قمت بتعريف السمة غير المتزامنة بشكل صريح إلى FALSE، فسيتم تحميل مستند XML بشكل متزامن. واستخدم مكون ServerXMLHTTP عند التحميل. وهذا يعني تمكين السطرين A وB في الكود أعلاه.
انسخ رمز الكود كما يلي:oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest، صحيح'==========B
هذا كل شيء! يوضح أن استخدام مكون SXH لتحميل مستندات XML يمكن أن يصحح خطأ التحميل غير المتزامن لموارد الإنترنت.
تلخيص
طريقة التحميل | سواء للاستخدام مكون ServerXMLHTTP | تحميل النتائج |
التحميل غير المتزامن | غير مستخدم | التحميل سيكون ناجحا. لكن مستند XML الذي تم تحميله في DOMDocument فارغ |
تحميل متزامن | غير مستخدم | سوف تواجه الفشل! سبب الخطأ هو: -2146697209 - لا توجد بيانات متاحة للمورد المطلوب. |
التحميل غير المتزامن | يستخدم | غير مسموح به |
تحميل متزامن | يستخدم | ناجحة حقا |