将MSXML DOMDocument转换为用作SqlDbType.Xml ADO.NET参数的值

将MSXML DOMDocument转换为用作SqlDbType.Xml ADO.NET参数的值,xml,msxml,sqldbtype,Xml,Msxml,Sqldbtype,我有一个存储过程,它接受从某个.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)) .

我有一个存储过程,它接受从某个.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类型,然后使用它


显然,性能将是一个考虑因素,但目前我只需要找出如何做到这一点的任何方式

更好的办法是根本不要混合使用MSXML和.NET


如果必须,则从MSXML对象获取xml字符串,并在该字符串上创建一个XmlReader,或者将字符串加载到XmlDocument中。

MSXML DOM将保存到实现COM IStream接口的任何内容,因此如果您能找到映射到.NET流的实现,您应该能够相当有效地实现这一点。

谢谢-是的,它最终比我想象的要简单-我只是使用了一个XMLTextReader将MSXMLDoc.XML字符串传递给它-不需要转换为XMLDocument不幸的是,我没有只使用.NET的选项,互操作是生活中的事实!谢谢