0

いくつかの.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タイプに変換して、それを使用できる場合はどうでしょうか。

明らかにパフォーマンスが考慮事項になりますが、今のところ私はそれをどのように行うかを考え出す必要があります!

4

2 に答える 2

0

より良いアイデアは、MSXML と .NET をまったく混在させないことです。

必要な場合は、MSXML オブジェクトから xml 文字列を取得し、文字列に対して XmlReader を作成するか、文字列を XmlDocument に読み込みます。

于 2009-03-10T10:33:55.827 に答える
0

MSXML DOM は、COM IStream インターフェイスを実装するすべてのものに保存されるため、.NET ストリームにマップされる実装を見つけることができれば、これをかなり効率的に達成できるはずです。

于 2009-03-10T10:39:52.507 に答える