daPublishers.Fill(dsSales, "Stores")
' Запись XML-данных в файл.
dsSales.WriteXml("..\StoreSales.xml")
' Запись схемы в XSD-файл.
dsSales.WriteXmlSchema("..\StoreSales.xsd")
' Пример изменения, удаления и вставки новой записи.
dsSales.Tables("Stores").Rows(0)("stor_id") = 999 ' Изменение
dsSales.Tables("Stores").Rows(1).Delete() ' Удаление
Dim rr As DataRow = dsSales.Tables("Stores").NewRow()
rr("stor_name") = "New Store"
dsSales.Tables("Stores").Rows.Add(rr) ' Вставка
' Сохранение только измененных записей в формате DiffGram.
Dim ChangedDataSet = dsSales.GetChanges()
ChangedDataSet.WriteXml("…\Changes.xml", XmlWriteMode.DiffGram)
' Сохранение всех записей в формате DiffGram.
dsSales.WriteXml("…\DiffGram.xml", XmlWriteMode.DiffGram)
End Sub
В листинге 10.6 приведено содержимое файла DiffGram.xml, полученного в результате щелчка на кнопке Write XML формы проекта ADO-XML. Внесенные в таблицу Stores изменения выделены полужирным начертанием. Удаленная запись отсутствует в разделе текущих данных, но присутствует в разделе исходного состояния вместе с исходным значением измененной записи. Кроме того, раздел с текущими данными содержит новую запись с отметкой "inserted" (вставлена).
Листинг 10.6. XML-файл DiffGram.xml в формате DiffGram с одной вставленной записью, одной удаленной записью и одной измененной записью<?xml version="1.0" standalone="yes"?>
<diffgr:diffgram xmlns:msdata="urn:schemes-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet>
<Sales diffgr:id="Sales1" msdata:rowOrder="0">
<stor_id>6380</stor_id>
<ord_num>6871</ord_num>
<ord_date>1994-09-14T00:00:00.0000000+02:00</ord_date>
<qty>5</qty>
<payterms>Net 60</payterms>
<title_id>BU1032</title_id>
</Sales>
<Sales diffgr:id="Sales2" msdata:rowOrder="1">
<stor_id>6380</stor_id>
<ord_num>722a</ord_num>
<ord_date>1994-09-13T00:00:00.0000000+02:00</ord_date>
<qty>3</qty>
<payterms>Net 60</payterms>
<title_id>PS2091</title_id>
</Sales>
<Sales diffgr:id="Sales3" msdata:rowOrder="2">
<stor_id>7066</stor_id>
<ord_num>A2976</ord_num>
<ord_date>1993-05-24T00:00:00.0000000+02:00</ord_date>
<qty>50</qty>
<payterms>Net 30</payterms>
<title_id>PC8888</title_id>
</Sales>
<Sales diffgr:id="Sales4" msdata:rowOrder="3">
<stor_id>7066</stor_id>
<ord_num>QA7442.3</ord_num>
<ord_date>1994-09-13T00:00:00.0000000+02:00</ord_date>
<qty>75</qty>
<payterms>ON invoice</payterms>
<title_id>PS2091</title_id>
</Sales>
<Sales diffgr:id="Sales5" msdata:rowOrder="4">
<stor_id>7067</stor_id>
<ord_num>D4482</ord_num>
<ord_date>1994-09-14T00:00:00.0000000+02:00</ord_date>
<qty>10</qty>
<payterms>Net 60</payterms>
<title_id>PS2091</title_id>
</Sales>
<Sales diffgr:id="Sales6" msdata:rowOrder="5">
<stor_id>7067</stor_id>
<ord_num>P2121</ord_num>
<ord_date>1992-06-15T00:00:00.0000000+02:00</ord_date>
<qty>40</qty>
<payterms>Net 30</payterms>
<title_id>TC3218</title_id>
</Sales>
<Sales diffgr:id="Sales7" msdata:rowOrder="6">
<stor_id>7067</stor_id>
<ord_num>P2121</ord_num>
<ord_date>1992-06-15T00:00:00.0000000+02:00</ord_date>
<qty>20</qty>
<payterms>Net 30</payterms>
<title_id>TC4203</title_id>
</Sales>
<Sales diffgr:id="Sales8" msdata:rowOrder="7">
<stor_id>7067</stor_id>
<ord_num>P2121</ord_num>
<ord_date>1992-06-15T00:00:00.0000000+02:00</ord_date>
<qty>20</qty>
<payterms>Net 30</payterms>
<title_id>TC7777</title_id>
</Sales>
<Sales diffgr:id="Sales9" msdata:rowOrder="8">
<stor_id>713K/stor_id>
<ord_num>N914008</ord_num>
<ord_date>1994-09-14T00:00:00.0000000+02:00</ord_date>
<qty>20</qty>
<payterms>Net 30</payterms>
<title_id>PS2091</title_id>
</Sales>
<Sales diffgr:id="Sales10" msdata:rowOrder="9">
<stor_id>7131</stor_id>
<ord_num>N914014</ord_num>
<ord_date>1994-09-14T00:00:00.0000000+02:00</ord_date>
<qty>25</qty>
<payterms>Net 30</payterms>
<title_id>MC3021</title_id>
</Sales>
<Sales diffgr:id="Sales11" msdata:rowOrder="10">
<stor_id>7131</stor_id>
<ord_num>P3087a</ord_num>
<ord_date>1993-05-29T00:00:00.0000000+02:00</ord_date>
<qty>20</qty>
<payterms>Net 60</payterms>
<title_id>PS1372</title_id>
</Sales>
<Sales diffgr:id="Sales12" msdata:rowOrder="11">
<stor_id>7131</stor_id>
<ord_num>P3087a</ord_num>
<ord_date>1993-05-29T00:00:00.0000000+02:00</ord_date>
<qty>25</qty>
<payterms>Net 60</payterms>
<title_id>PS2106</title_id>
</Sales>
<Sales diffgr:id="Sales13" msdata:rowOrder="12">
<stor_id>7131</stor_id>
<ord_num>P3087a</ord_num>
<ord_date>1993-05-29T00:00:00.0000000+02:00</ord_date>
<qty>15</qty>
<payterms>Net 60</payterms>
<title_id>PS3333</title_id>
</Sales>
<Sales diffgr:id="Sales14" msdata:rowOrder="13">
<stor_id>7131</stor_id>
<ord_num>P3087a</ord_num>