У меня есть хранимая процедура, которая принимает параметр xml (SqlDbType.Xml), который вызывается из некоторого кода .NET/ADO.NET. Я протестировал это через тестовый жгут с помощью System.XML.XMLReader, чтобы прочитать некоторый тестовый XML-файл;Преобразование MSXML DOMDocument для использования в качестве значения для параметра SqlDbType.Xml ADO.NET
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, так что все в порядке. Теперь все, что мне нужно сделать, - это правильно преобразовать его, чтобы он мог быть передан в сохраненный proc.
System.XML.XMLReader имеет ряд перегрузок, которые берут объекты потока, мне интересно, могу ли я создать поток поверх объекта MSXML? Или, если я могу преобразовать MSXML в .NET XML-тип, который затем можно использовать?
Очевидно, что производительность будет рассматриваться, но на данный момент мне просто нужно разобраться, как это сделать!
Спасибо - да, это оказалось проще, чем я думал, что в конце концов - я просто использовал XmlTextReader передавая ему строку MSXMLDoc.XML - нет необходимости в преобразовании в XMLDocument К сожалению, я не имею возможность работать только с .NET, interop - это факт жизни! благодаря – DannykPowell