تحويل MSXML DOMDocument لاستخدامها قيمة للمعلمة SqlDbType.Xml ADO.NET

StackOverflow https://stackoverflow.com/questions/629508

  •  08-07-2019
  •  | 
  •  

سؤال

ولدي إجراء مخزن التي تقبل معلمة أكس (SqlDbType.Xml) التي يتم استدعاؤها من بعض التعليمات البرمجية. NET / ADO.NET. لقد اختبرت ذلك من خلال تسخير اختبار باستخدام System.XML.XMLReader لقراءة بعض XML اختبار من ملف.

Dim xmlParam As SqlParameter = New SqlParameter("@xml", SqlDbType.Xml)
xmlParam.Value = New SqlTypes.SqlXml(XmlReader.Create(txtXMLFile.Text))
.Parameters.Add(xmlParam)

في تطبيق هذا القانون هو الذهاب إلى وXML الفعلي هو في كائن VB6، في كائن MSXML2.DOMDocument40 (مشروع VB6 يحيل الى MSXML4) لقد عملت على كيفية حشد MSXML.DOMDocument40 عبر إلى .NET من VB6 - في الواقع المشروع. NET يحيل بالفعل MSXML4 حتى لا يكون كل شيء بخير. الآن كل ما عليك القيام به هو الحصول على هذه تحويلها بشكل صحيح بحيث يمكن تمريرها إلى بروك المخزنة.

وSystem.XML.XMLReader لديها عدد من الزائدة التي تأخذ الأشياء تيار، وأنا أتساءل عما اذا كان يمكنني خلق تيار على أعلى الكائن MSXML؟ أو ما اذا كان يمكنني تحويل MSXML إلى صافي نوع XML، التي يمكن استخدامها بعد ذلك؟

ومن الواضح أن الأداء سيكون النظر ولكن في الوقت الحالي أنا فقط بحاجة إلى العمل على كيفية القيام بذلك بأي شكل من الأشكال!

هل كانت مفيدة؟

المحلول

وفكرة أفضل هو عدم خلط MSXML و. NET على الإطلاق.

إذا يجب، ثم الحصول على سلسلة XML من الكائن MSXML، وإما خلق XmlReader خلال سلسلة، وإلا تحميل السلسلة إلى XmlDocument.

نصائح أخرى

وسوف MSXML DOM حفظ أي شيء لأدوات واجهة COM IStream حتى إذا يمكنك العثور على تنفيذ ذلك بأن يعين تيار. NET يجب أن تكون قادرة على acheive هذه بكفاءة إلى حد ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top