У меня есть хранимая процедура, которая принимает параметр xml (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 в тип .NET XML, который затем можно использовать?
Очевидно, что производительность будет иметь значение, но на данный момент мне просто нужно разобраться, как это сделать любым способом!