我有一个存储过程接受从某些.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编组到.NET中VB6 - 实际上.NET项目已经引用了MSXML4,所以这一切都很好。现在我需要做的就是将其正确转换,以便将其传递到存储过程中。
System.XML.XMLReader有一些带有流对象的重载,我想知道我是否可以在MSXML对象之上创建一个流?或者,如果我可以将MSXML转换为.NET XML类型,然后可以使用它?
显然性能将是一个考虑因素,但目前我只需要弄清楚如何做到这一点!
答案 0 :(得分:0)
更好的想法是根本不要混用MSXML和.NET。
如果必须,则从MSXML对象获取xml字符串,并在字符串上创建XmlReader,或者将字符串加载到XmlDocument中。
答案 1 :(得分:0)
MSXML DOM将保存实现COM IStream接口的任何内容,因此如果您能找到映射到.NET流的实现,您应该能够相当有效地实现这一点。