Ich habe eine gespeicherte Prozedur, die einen XML-Parameter (SqlDbType.Xml) akzeptiert, der von einem bestimmten .NET/ADO.NET-Code aufgerufen wird. Ich habe dies über eine Testumgebung mit einem System.XML.XMLReader getestet, um Test-XML aus einer Datei zu lesen.Konvertieren von MSXML DOMDocument, das als Wert für SqlDbType.Xml verwendet werden soll ADO.NET-Parameter
Dim xmlParam As SqlParameter = New SqlParameter("@xml", SqlDbType.Xml)
xmlParam.Value = New SqlTypes.SqlXml(XmlReader.Create(txtXMLFile.Text))
.Parameters.Add(xmlParam)
Bei der Anwendung dieser Code in sich geht, ist die eigentliche XML in einem VB6-Objekt, in einem MSXML2.DOMDocument40 Objekt (das VB6 Projekt verweist MSXML4) Ich habe gearbeitet, wie die MSXML.DOMDocument40 über Marschall zu .NET von VB6 - tatsächlich verweist das .NET-Projekt bereits auf MSXML4, so dass alles in Ordnung ist. Alles, was ich jetzt tun muss, ist, diese richtig zu konvertieren, damit sie in den gespeicherten Prozess übergeben werden kann.
System.XML.XMLReader hat eine Reihe von Überladungen, die Stream-Objekte nehmen, ich frage mich, ob ich einen Stream oben auf dem MSXML-Objekt erstellen kann? Oder wenn ich die MSXML in einen .NET XML-Typ konvertieren kann, der dann verwendet werden kann?
Offensichtlich wird die Leistung eine Überlegung sein, aber für den Moment muss ich nur herausfinden, wie es geht!
Dank - ja es stellte sich einfacher aus als ich am Ende gedacht - habe ich gerade einen XMLTextReader die Zeichenfolge MSXMLDoc.XML vorbei - keine Notwendigkeit für die Umwandlung in XMLDocument Leider nur habe ich nicht die Möglichkeit, zu arbeiten, mit .NET ist Interop eine Tatsache des Lebens! Vielen Dank – DannykPowell