いくつかの.NET/ADO.NETコードから呼び出されているxmlパラメーター(SqlDbType.Xml)を受け入れるストアドプロシージャがあります。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をVB6から.NETにマーシャリングする方法を検討しました。実際、.NETプロジェクトはすでにMSXML4を参照しているので、問題ありません。これで、これを適切に変換して、ストアドプロシージャに渡すことができるようにするだけです。
System.XML.XMLReaderには、ストリームオブジェクトを取得する多数のオーバーロードがありますが、MSXMLオブジェクトの上にストリームを作成できるかどうか疑問に思っていますか?または、MSXMLを.NET XMLタイプに変換して、それを使用できる場合はどうでしょうか。
明らかにパフォーマンスが考慮事項になりますが、今のところ私はそれをどのように行うかを考え出す必要があります!