Auto XML Map Property SP Return Dataset

Haktan AKDAĞ
1 min readOct 18, 2023

Merhaba arkadaşlar; Bu dokümanda sizlere MSSQL ‘den SP ile çektiğimiz bir datasetin otomatik bir biçimde xml oluşturulmasını, sp den çekilen kolonların xml propertysi olarak gösterilmesinden bahsedeceğim.

SFA (Sales Force) sisteminin-> Dünyanın en çok kullanılan satış dağıtım sisteminin istediği standartları barındıran ve bu dokümamı yayınlamama sebep olan data xml export işinin aşamalarını anlatma gerekirse, aşağıdaki xml taslağına ait çıktının oluşturulması için yazdığım kodları sizlerle paylaşmak istedim.

<ROOT>
<XMLBaslik>
<XmlDetay X="X" Y="Y" Z="20140822 11:00" STATUS="2" T="T"/>
<XmlDetay X="X1" Y="Y1" Z="20140822 11:00" STATUS="2" T="T1"/>
</XMLBaslik>
</ROOT>

Bu xml içindeki kayıtlara bağlık olarak çalıcak olan SP den X,Y,Z,STATUS,T gibi kolonların döndüğü bir dataset hayal edelim.

  Function MoveFromSqlToXml()

Dim xml = Export2XML("Outlet", "EXEC " & procname, True)
File.WriteAllText("C:\XMLDizin\Falanca.xml", xml)

End Function

Export2XML methodu

 Public Function Export2XML(TableName As String, ByVal sorgu As String, IsSp As Boolean) As String
Dim conn As New SqlConnection(Main.gGetConnectionStringPan())
Dim ds As New DataSet(String.Concat(TableName, "s"))
Dim da As New SqlDataAdapter(sorgu, conn)
da.Fill(ds)

If IsSp Then
da.SelectCommand.CommandType = CommandType.StoredProcedure
End If

ds.Tables(0).TableName = TableName


For Each dt As DataTable In ds.Tables
For Each dc As DataColumn In dt.Columns
dc.ColumnMapping = MappingType.Attribute
Next
Next

Dim sb As New StringBuilder()
Dim stringWriter As New StringWriterWithEncoding(sb, Encoding.UTF8)
Dim xws As New XmlWriterSettings()

Using xw = XmlWriter.Create(stringWriter, xws)
xw.WriteStartElement("ROOT")
ds.Tables(0).WriteXml(xw, XmlWriteMode.IgnoreSchema)
xw.WriteEndElement()
End Using

Return sb.ToString()
End Function

Bu mantığa göre ilgili xml dosyasının çıktısı dinamik bir biçimde ayrıca mapleme işi yapmadan çalıştırılabilmektedir.

--

--