// Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π² ΡΠΏΠΈΡΠΎΠΊ
XmlNodeList nodeLst=doc.SelectNodes("//ProductName");
foreach (XmlNode nd in nodeLst) listBox1.Items.Add(nd.InnerXml);
Π§ΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ DataSet, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
DataSet dsNew = new DataSet();
dsNew.ReadXmlSchema("..\\..\\..\\diffgram.xsd");
dsNew.XmlRead("..\\..\\..\\diffgram.xml", XmlReadMode.DiffGram);
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ DataSet, dsNew. ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° ReadXmlSchema ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ DataTable Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΡ Π΅ΠΌΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΊΠ»ΠΎΠ½ΠΎΠΌ DataTable ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π² DiffGram. DiffGram Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΡ Π΅ΠΌΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ DataTable Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΈ Π³ΠΎΡΠΎΠ² ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ReadXml. ΠΠΎΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ DiffGram (diffgram.xml):
<?xml version="1.0" standalone="yes"?>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<XMLProducts>
<products diffgr:id="products1" msdata:rowOrder="0" diffgr:hasChanged="modified">
<ProductID>1</ProduΡtID>
<ProductName>NewProdName</ProductName>
<SupplierID>1</SupplierID>
<CategoryID>1</CategoryID>
<QuantityPerUnit>10 boxes x 20 bags</QuantityPerUnit>
<UnitPrice>18</UnitPrice>
<UnitsInStock>39</UnitsInStock>
<UnitsOnOrder>0</UnitsOnOrder>
<ReorderLevel>10</ReorderLevel>
<Discontinued>false</Discontinued>
</products>
<products diffgr:id="products2" msdata:rowOrder="1">
<ProductID>2</ProductID>
<ProduΡtName>Chang</ProductName>
<SupplierID>1</SupplierID>
<CategoryID>1</CategoryID>
<QuantityPerUnit>24 - 12 oz bottles</QuantityPerUnit>
<UnitPrice>19</UnitPrice>
<UnitsInStock>17</UnitsInStock>
<UnitsOnOrder>40</UnitsOnOrder>
<ReorderLevel>25</ReorderLevel>
<Discontinued>false</Discontinued>
</products>
β¦
<products diffgr:id="products78" msdata:rowOrder="77" diffgr:hasChanges="inserted">
<ProductID>100</ProductID>
<ProductName>This is a new product</ProductName>
<SupplierID>12</SupplierID>
<CategoryID>2</CategoryID>
<QuantityPerUnit>12</QuantityPerUnit>
<UnitPrice>23</UnitPrice>
<UnitsInStock>5</UnitsInStock>
<UnitsOnOrder>0</UnitsOnOrder>
<ReorderLevel>1</ReorderLevel>
<Discontinued>false</Discontinued>
</products>
</XMLProducts>
<diffgr:before>
<products diffgr:id="products1" msdata:rowOrder="0">
<ProductID>1</ProductID>
<ProductName>Chai </ProductName>
<SupplierID>1</SupplierID>
<CategoryID>1</CategoryID>
<QuantityPerUnit>10 boxes x 20 bugs </QuantityPerUnit>
<UnitPrice>18</UnitPrice>
<UnitsInStock>39</UnitsInStock>
<UnitsOnOrder>0</UnitsOnOrder>
<ReorderLevel>10</ReorderLevel>
<Discontinued>false</Discontinued>
</products>
</diffgr:before>
</diffgr:diffgram>
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° DataTable, ΠΈ ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ diffgr:id Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <products>. diffgr ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π΄Π»Ρ urn:schemas-microsoft-com:xml-diffgram-v1. ΠΠ»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄Π»Ρ Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ADO.NET Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ diffgr:hasChanges. ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <diffgr:before> ΠΏΠΎΡΠ»Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <XMLProducts>, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <products>, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊ. ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ "before", ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <diffgr:before>, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ DiffGram ΡΡΠΈΡΠ°Π½ Π² DataTable, ΠΎΠ½ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π±ΡΠ» Π±Ρ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ AcceptChanges. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠΊΠ°ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²ΡΠ·ΡΠ²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ RejectChanges. ΠΡΠΎΠ²Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ DataRow.Item ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π»ΠΈΠ±ΠΎ DataRowVersion.Original, Π»ΠΈΠ±ΠΎ DataRowVersion.Current, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² DataTable ΠΏΠ΅ΡΠ΅Π΄ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² XML
Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΡΡΠ³Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ Π±ΡΠ» Π΄ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° .NET ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ System.Xml.Serialization.
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠΌΡ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ XML. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΎΡΠΊΡΡΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ/ΠΈΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ. Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ XML Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΊΡΡΡΡΠ΅. ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ BinaryFormatter Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ System.Runtime.Serialization.Formatters.Binary. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅:
β‘ ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ.
β‘ ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½.
β‘ ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
ΠΠΌΠ΅ΡΡΠ΅ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π³ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡ ΠΈΠ· ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°). ΠΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΈ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΡΠΎΠ³ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΈ ΡΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π³ΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΌ ΠΈΠΌΠ΅Π½ System.Runtime.Serialization.Formatters.Binary.
ΠΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ»ΡΠΌΠΈ, ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΠΈ XML, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Π² ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² XmlElement ΠΈ XmlAttribute. Π‘Π²ΡΠ·ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΌ XML ΡΠ²Π»ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π½Π½ΠΎΡΠΈΡΡΡΡ ΠΊΠ»Π°ΡΡΡ. ΠΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ .NET ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΡ,β ΡΡΠΎ ΡΡΠΈΠ»ΠΈΡΠ° xsd.exe, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
β‘ ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡ Π΅ΠΌΡ XML ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΡΡ Π΅ΠΌΡ XDR
β‘ ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡ Π΅ΠΌΡ XML ΠΈΠ· ΡΠ°ΠΉΠ»Π° XML
β‘ ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ DataSet ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΡΡ Π΅ΠΌΡ XSD
β‘ ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π΄Π»Ρ XmlSerilization
β‘ ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ XSD ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ
β‘ ΠΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅
β‘ ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ (C#, VB.NET, ΠΈΠ»ΠΈ JScript.NET)
β‘ Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡ Π΅ΠΌΡ ΠΈΠ· ΡΠΈΠΏΠΎΠ² Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ±ΠΎΡΠΊΠ°Ρ
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ xsd.exe, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ, ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ , ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ (ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ SerialSample1). Π Π½Π°ΡΠ°Π»Π΅ ΠΈΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Product, pd, ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
private void button1_Click(object sender, System.EventArgs e) {
// Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Products
Products pd=new Products();
// Π·Π°Π΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
pd.ProductXD=200;
pd.CategoryID=100;
pd.Discontinued=false;
pd.ProductName="Serialize Objects";
pd.QuantityPerUnit="6";
pd.ReorderLevel=1;
pd.SupplierID=1;
pd.UnitPrice=1000;
pd.UnitsInStock=10;
pd.UnitsOnOrder=0;
ΠΠ΅ΡΠΎΠ΄ Serialize ΠΊΠ»Π°ΡΡΠ° XmlSerializer ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ Π²Π΅ΡΡΠΈΠΉ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Stream, TextWriter ΠΈΠ»ΠΈ XmlWriter. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ tr Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ TextWriter. ΠΠ°ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ sr Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XmlSerializer. XmlSerializer Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ typeof Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½. ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° sr Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Serialize, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ tr (ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Stream) ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ pd. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°ΠΊΡΡΡΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΡ.
//Π½ΠΎΠ²ΡΠΉ TextWriter ΠΈ XmlSerializer
TextWriter tr=new StreamWriter("..\\..\\..\\serialprod.xml");
XmlSerializer sr=new XmlSerializer(typeof(Products));
// ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ
sr.Serialize(tr,pd);
tr.Close();
}
ΠΠ΄Π΅ΡΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° newPd Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Products. Π ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ FileStream Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ XML: