2009-03-10 3 views
0

일부 .NET/ADO.NET 코드에서 호출되는 xml 매개 변수 (SqlDbType.Xml)를 허용하는 저장 프로 시저가 있습니다. 필자는 System.XML.XMLReader를 사용하여 파일에서 일부 테스트 XML을 읽는 테스트 장치를 통해이를 테스트했습니다. 이 코드가 들어가있는 응용 프로그램에서 SqlDbType.Xml 값으로 사용할 MSXML DOMDocument 변환 ADO.NET 매개 변수

Dim xmlParam As SqlParameter = New SqlParameter("@xml", SqlDbType.Xml) 
xmlParam.Value = New SqlTypes.SqlXml(XmlReader.Create(txtXMLFile.Text)) 
.Parameters.Add(xmlParam) 

는 실제 XML 내가 가로 질러 MSXML.DOMDocument40를 마샬링하는 방법을 일한합니다 (VB6 프로젝트 MSXML4를 참조)를 MSXML2.DOMDocument40 오브젝트에서는, VB6 객체에 NET에서 VB6로 - 실제로 .NET 프로젝트는 이미 MSXML4를 참조하므로이 모든 것이 잘됩니다. 이제는 저장 프로 시저에 전달 될 수 있도록 올바르게 변환해야합니다.

System.XML.XMLReader에는 스트림 개체를 사용하는 많은 오버로드가 있습니다. MSXML 개체 위에 스트림을 만들 수 있는지 궁금합니다. 또는 MSXML을 .NET XML 형식으로 변환 할 수 있다면 사용할 수 있습니까?

분명히 성능은 고려 사항 일 것이지만 현재로서는 어떤 방식 으로든 그것을 수행하는 방법을 알아야합니다.

답변

0

더 좋은 아이디어는 MSXML과 .NET을 전혀 혼합하지 않는 것입니다.

MSXML 개체에서 xml 문자열을 가져온 다음 문자열에 대해 XmlReader를 만들거나 XmlDocument에 문자열을로드합니다.

+0

감사합니다 - 나는 결국 생각했던 것보다 예는 간단 밝혀졌다 - 불행하게도 나는 단지 일을 할 수있는 옵션이 없습니다 XMLDocument로 로 변환 필요가 없습니다 - 그냥 그것에게 MSXMLDoc.XML 문자열을 통과하는 XmlTextReader는 사용 .NET으로 interop는 사실의 사실입니다! 감사 – DannykPowell

0

MSXML DOM은 COM IStream 인터페이스를 구현하는 모든 것을 저장하므로 .NET 스트림에 매핑되는 구현을 찾을 수 있다면이를 상당히 효율적으로 수행 할 수 있어야합니다.