Roya Rayane
پنج شنبه 20 تیر 1387, 08:20 صبح
سلام.
دوستان من یک پرژوه دارم که می خوام توی فایل XML ذخیره کنم و داخل دیتاگرید نمایش بدم. اگه لطف کنید یک مثال کوچک مثلا دوتا فیلد نام و نام خانوادگی رو ذخیره کنه رو اینجا بگذارید. و یک مقدار توضیح هم بدید که چطوری کار میکنه.
ممنون.
علیرضا مداح
پنج شنبه 20 تیر 1387, 08:50 صبح
سلام دوست عزیز ،
اشیاء DataSet/DataTable دارای دو مند به نام های WriteXml و ReadXml جهت خواندن/نوشتن اطلاعات و ساختار این اشیاء از/برروی فایل XML میباشند ،
مثالی از MSDN :
static void Main()
{
DataSet ds = new DataSet();
DataTable customerTable = GetCustomers();
DataTable orderTable = GetOrders();
ds.Tables.Add(customerTable);
ds.Tables.Add(orderTable);
ds.Relations.Add("CustomerOrder",
new DataColumn[] { customerTable.Columns[0] },
new DataColumn[] { orderTable.Columns[1] }, true);
System.IO.StringWriter writer = new System.IO.StringWriter();
customerTable.WriteXml(writer, XmlWriteMode.WriteSchema, false);
PrintOutput(writer, "Customer table, without hierarchy");
writer = new System.IO.StringWriter();
customerTable.WriteXml(writer, XmlWriteMode.WriteSchema, true);
PrintOutput(writer, "Customer table, with hierarchy");
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
private static DataTable GetCustomers()
{
// Create sample Customers table, in order
// to demonstrate the behavior of the DataTableReader.
DataTable table = new DataTable();
// Create two columns, ID and Name.
DataColumn idColumn = table.Columns.Add("ID", typeof(System.Int32));
table.Columns.Add("Name", typeof(System.String));
// Set the ID column as the primary key column.
table.PrimaryKey = new DataColumn[] { idColumn };
table.Rows.Add(new object[] { 1, "Mary" });
table.Rows.Add(new object[] { 2, "Andy" });
table.Rows.Add(new object[] { 3, "Peter" });
table.Rows.Add(new object[] { 4, "Russ" });
table.AcceptChanges();
return table;
}
private static DataTable GetOrders()
{
// Create sample Customers table, in order
// to demonstrate the behavior of the DataTableReader.
DataTable table = new DataTable();
// Create three columns; OrderID, CustomerID, and OrderDate.
table.Columns.Add(new DataColumn("OrderID", typeof(System.Int32)));
table.Columns.Add(new DataColumn("CustomerID", typeof(System.Int32)));
table.Columns.Add(new DataColumn("OrderDate", typeof(System.DateTime)));
// Set the OrderID column as the primary key column.
table.PrimaryKey = new DataColumn[] { table.Columns[0] };
table.Rows.Add(new object[] { 1, 1, "12/2/2003" });
table.Rows.Add(new object[] { 2, 1, "1/3/2004" });
table.Rows.Add(new object[] { 3, 2, "11/13/2004" });
table.Rows.Add(new object[] { 4, 3, "5/16/2004" });
table.Rows.Add(new object[] { 5, 3, "5/22/2004" });
table.Rows.Add(new object[] { 6, 4, "6/15/2004" });
table.AcceptChanges();
return table;
}
private static void PrintOutput(System.IO.TextWriter writer, string caption)
{
Console.WriteLine("==============================");
Console.WriteLine(caption);
Console.WriteLine("==============================");
Console.WriteLine(writer.ToString());
}
bachebahal_1363
پنج شنبه 20 تیر 1387, 10:20 صبح
البته باز هم سوال گنگ هست
شاید منظور شما استفاده از کلاس XML.Serialization باشه :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization;
namespace MyProject.Classes
{
public class SerializableData
{
// Save - serialize the object to disk...
public void Save(String filename)
{
// make a temporary filename...
String tempFilename;
tempFilename = filename + ".tmp";
// does the file exist?
FileInfo tempFileInfo = new FileInfo(tempFilename);
if (tempFileInfo.Exists)
tempFileInfo.Delete();
// open the file...
FileStream stream = new FileStream(tempFilename,
FileMode.Create);
// save the object...
Save(stream);
// close the file...
stream.Close();
// remove the existing data file and
// rename the temp file...
tempFileInfo.CopyTo(filename, true);
tempFileInfo.Delete();
}
// Save - actually perform the serialization...
public void Save(Stream stream)
{
// create a serializer...
XmlSerializer serializer = new XmlSerializer(this.GetType());
// save the file...
serializer.Serialize(stream, this);
}
}
}
علیرضا مداح
پنج شنبه 20 تیر 1387, 10:30 صبح
بله ، در حقیقت متدهایی مذکور نیز از تکنیک XML Serialization بهره گیری میکنند ، ولی پیاده سازی این تکنیک به طور دستی در این مورد که قرار است عملیات گوناگونی از جمله درج/حذف/جستحو بر روی دیتا صورت بگیرد ، کار را کمی مشکل میکند ، در حالیکه میتوان با روش مذکور از امکانات ADO.Net در زمینه کار با داده ها بهره گرفت ،
bachebahal_1363
پنج شنبه 20 تیر 1387, 10:35 صبح
بله ، در حقیقت متدهایی مذکور نیز از تکنیک XML Serialization بهره گیری میکنند ، ولی پیاده سازی این تکنیک به طور دستی در این مورد که قرار است عملیات گوناگونی از جمله درج/حذف/جستحو بر روی دیتا صورت بگیرد ، کار را کمی مشکل میکند ، در حالیکه میتوان با روش مذکور از امکانات ADO.Net در زمینه کار با داده ها بهره گرفت ،
دقیقا درسته ، اما به تجربه معلوم شده که دوستانی که در این زمینه سوال می کنند بیشتر جهت ارائه پروژه به دانشگاه می باشد که بیشتر در زمینه ایجاد یک فایل Xml هست تا استفاده از آن در ADO.NET و ذخیره دیتا در دیتابیس . در هر صورت با توجه به سوال پرسیده شده که نشانی از ذخیره در دیتابیس نیست و فقط نمایش در دیتاگرید هست می شه اینگونه برداشت کرد که فقط جهت ایجاد فایل xml و نمایش دیتاهای اون در دیتا گرید باشه .
hdv212
پنج شنبه 20 تیر 1387, 16:24 عصر
لطفا این نمونه برنامه (http://barnamenevis.org/forum/showpost.php?p=387328&postcount=32) رو هم مشاهده نمایید.
کلاسهای زیادی برای کار با XML در دات نت موجود است، اما کلاسهایی رو که من به شما پیشنهاد میکنم و همینطور در پروژه ی بالا از آن ااستفاده شده، XmlTextReader و XmlTextWriter هست که با توجه به نحوه ی بکار گیری ابزارهای آن، درک بهتری از XML پیدا خواهید کرد، چون به جای کار کردن با DataTable، خودتان به صورت مستقیم با tag های Xml کار خواهید کرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.