Csharp/CSharp Tutorial/XML/Xml DataSet
Содержание
Create Data with DataSet and DataRow and save to xml
<source lang="csharp">using System; using System.Data; public enum DiscountType {
Percentage, Fixed
} public class CreateData {
public static void Main(string [] args) { DataSet dataSet = new DataSet(); dataSet.ReadXmlSchema("Coupons.xsd"); DataTable couponsTable = dataSet.Tables["coupons"]; DataRow couponRow = couponsTable.NewRow(); couponRow["mycode"] = "763FF"; couponRow["amount"] = 0.5; couponRow["mytype"] = DiscountType.Fixed; couponRow["my_date"] = new DateTime(2002,12,31); couponsTable.Rows.Add(couponRow); dataSet.WriteXml("Coupons.xml"); }
}</source>
Fill DataSet with the data from XML
<source lang="csharp">using System; using System.Xml; using System.Xml.Xsl; using System.Xml.XPath; using System.Data.rumon; using System.Data; class MainClass {
static void Main(string[] args) { DataSet ds = new DataSet(); ds.ReadXml(@"c:\Sample.xml "); }
}</source>
Load XML to DataSet
<source lang="csharp">using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; using System.Xml; public class LoadXMLDataSet : System.Windows.Forms.Form {
private DataGrid dataGrid1= new DataGrid(); public LoadXMLDataSet() { this.dataGrid1.DataMember = ""; this.dataGrid1.Location = new System.Drawing.Point(8, 16); this.dataGrid1.Size = new System.Drawing.Size(264, 232); this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] {this.dataGrid1}); XmlDataDocument xmlDatadoc = new XmlDataDocument(); xmlDatadoc.DataSet.ReadXml("C:\\books.xml"); DataSet ds = new DataSet("Books DataSet"); ds = xmlDatadoc.DataSet; dataGrid1.DataSource = ds.DefaultViewManager; } static void Main() { Application.Run(new LoadXMLDataSet()); }
}</source>
Output DataSet to Xml
<source lang="csharp">using System; using System.Collections.Generic; using System.Text; using System.Data; using System.IO; using System.Runtime.Serialization.Formatters.Binary;
class Program { static void Main(string[] args) { DataSet carsInventoryDS = new DataSet("Car"); carsInventoryDS.ExtendedProperties["TimeStamp"] = DateTime.Now; carsInventoryDS.ExtendedProperties["DataSetID"] = Guid.NewGuid(); carsInventoryDS.ExtendedProperties["Company"] = "Training"; DataColumn carIDColumn = new DataColumn("CarID", typeof(int)); carIDColumn.Caption = "Car ID"; carIDColumn.ReadOnly = true; carIDColumn.AllowDBNull = false; carIDColumn.Unique = true; carIDColumn.AutoIncrement = true; carIDColumn.AutoIncrementSeed = 0; carIDColumn.AutoIncrementStep = 1; DataColumn carMakeColumn = new DataColumn("Make", typeof(string)); DataColumn carColorColumn = new DataColumn("Color", typeof(string)); DataColumn carPetNameColumn = new DataColumn("PetName", typeof(string)); carPetNameColumn.Caption = "Pet Name"; DataTable inventoryTable = new DataTable("Inventory"); inventoryTable.Columns.AddRange(new DataColumn[] { carIDColumn, carMakeColumn, carColorColumn, carPetNameColumn }); DataRow carRow = inventoryTable.NewRow(); carRow["Make"] = "BMW"; carRow["Color"] = "Black"; carRow["PetName"] = "Hamlet"; inventoryTable.Rows.Add(carRow); carRow = inventoryTable.NewRow(); carRow[1] = "A"; carRow[2] = "B"; carRow[3] = "C"; inventoryTable.Rows.Add(carRow); inventoryTable.PrimaryKey = new DataColumn[] { inventoryTable.Columns[0] }; carsInventoryDS.Tables.Add(inventoryTable); // Save this DataSet as XML. carsInventoryDS.WriteXml("carsDataSet.xml"); carsInventoryDS.WriteXmlSchema("carsDataSet.xsd"); // Clear out DataSet. carsInventoryDS.Clear(); // Load DataSet from XML file. carsInventoryDS.ReadXml("carsDataSet.xml"); } }</source>
Reading XML with DataSet
<source lang="csharp">using System; using System.Data; using System.Collections.Generic; using System.Text;
class Program { static void Main(string[] args) { DataSet thisDataSet = new DataSet(); thisDataSet.ReadXml("nwinddata.xml"); foreach (DataRow custRow in thisDataSet.Tables["Customers"].Rows) { Console.WriteLine("Customer ID: " + custRow["CustomerID"] + " Name: " + custRow["CompanyName"]); } Console.WriteLine("Table created by ReadXml is called {0}", thisDataSet.Tables[0].TableName); } }</source>
Save data in a DataSet to xml document
<source lang="csharp">using System; using System.IO; using System.Xml; using System.Data; class MainClass {
public static void Main() { DataSet ds = new DataSet("DS"); ds.Namespace = "StdNamespace"; DataTable stdTable = new DataTable("Student"); DataColumn col1 = new DataColumn("Name"); DataColumn col2 = new DataColumn("Address"); stdTable.Columns.Add(col1); stdTable.Columns.Add(col2); ds.Tables.Add(stdTable); DataRow newRow;newRow = stdTable.NewRow(); newRow["Name"]= "M C"; newRow["Address"]= "address 1"; stdTable.Rows.Add(newRow); newRow = stdTable.NewRow(); newRow["Name"]= "M G"; newRow["Address"]= "address1"; stdTable.Rows.Add(newRow); ds.AcceptChanges(); StreamWriter myStreamWriter = new StreamWriter(@"c:\stdData.xml"); ds.WriteXml(myStreamWriter); myStreamWriter.Close(); }
}</source>