DataTable is not enough for you ;)
You need to use
DataSet[
^] object and 3 of
DataTable[
^] objects, because xml file is simple database, which can store more than one table. Each element:
HEADER
,
KYCDATA
and
FOOTER
is a container for data...
Try this:
Private Sub WriteMyXML()
Dim ds As Data.DataSet = Nothing
Dim dt1 As Data.DataTable = Nothing, dt2 As Data.DataTable = Nothing, dt3 As Data.DataTable = Nothing
Dim dr As Data.DataRow = Nothing, dc As Data.DataColumn = Nothing
Try
ds = New Data.DataSet("ROOT")
dt1 = New Data.DataTable("HEADER")
dc = New Data.DataColumn("COMPANY_CODE", GetType(String))
dt1.Columns.Add(dc)
dc = New Data.DataColumn("BATCH_DATE", GetType(Date))
dt1.Columns.Add(dc)
dr = dt1.NewRow
dr.Item("COMPANY_CODE") = "GULMOHAR"
dr.Item("BATCH_DATE") = DateTime.Parse("02/01/2012")
dt1.Rows.Add(dr)
dt2 = New Data.DataTable("KYCDATA")
dc = New Data.DataColumn("APP_UPDTFLG", GetType(String))
dt2.Columns.Add(dc)
dc = New Data.DataColumn("APP_POS_CODE", GetType(String))
dt2.Columns.Add(dc)
dc = New Data.DataColumn("APP_NO", GetType(Integer))
dt2.Columns.Add(dc)
dc = New Data.DataColumn("APP_DATE", GetType(Date))
dt2.Columns.Add(dc)
dr = dt2.NewRow
dr.Item("APP_UPDTFLG") = "01"
dr.Item("APP_POS_CODE") = "GULMOHAR"
dr.Item("APP_NO") = 1
dr.Item("APP_POS_CODE") = DateTime.Parse("02/01/2012")
dt2.Rows.Add(dr)
dt3 = New Data.DataTable("FOOTER")
dc = New Data.DataColumn("NO_OF_KYC_RECORDS", GetType(Integer))
dt3.Columns.Add(dc)
dc = New Data.DataColumn("NO_OF_ADDLDATA_RECORDS", GetType(Integer))
dt3.Columns.Add(dc)
dr = dt3.NewRow
dr.Item("NO_OF_KYC_RECORDS") = 1
dr.Item("NO_OF_ADDLDATA_RECORDS") = 0
dt3.Rows.Add(dr)
ds.Tables.Add(dt1)
ds.Tables.Add(dt2)
ds.Tables.Add(dt3)
ds.WriteXml("E:\myXml.xml", XmlWriteMode.IgnoreSchema)
Catch ex As Data.DataException
Console.WriteLine(ex.Message)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Output:
="1.0"="yes"
- <ROOT>
- <HEADER>
<COMPANY_CODE>GULMOHAR</COMPANY_CODE>
<BATCH_DATE>2012-02-01T00:00:00+01:00</BATCH_DATE>
</HEADER>
- <KYCDATA>
<APP_UPDTFLG>01</APP_UPDTFLG>
<APP_POS_CODE>2012-02-01 00:00:00</APP_POS_CODE>
<APP_NO>1</APP_NO>
</KYCDATA>
- <FOOTER>
<NO_OF_KYC_RECORDS>1</NO_OF_KYC_RECORDS>
<NO_OF_ADDLDATA_RECORDS>0</NO_OF_ADDLDATA_RECORDS>
</FOOTER>
</ROOT>