MOHMMAD.M
یک شنبه 20 مرداد 1392, 06:35 صبح
سلام .
من یه کدی نوشتم که یه مقدار اینجا توضیح میدم شاید به درد کسی بخوره . چون فکر کنم کد جالبه . بعد هم سوالم رو میپرسم دوستانی که دستی بر اتش دارن لطفا کمکم کنند .
من یه فایل ایکس ام ال دارم که میخوام دیسریالایزش کنم ولی نه به روش معمول که فیلد ها و.... رو به صورت اماده تو کلاسم مخصوص به خودش داشته باشم .
مثلا معمولش اینه که چندتا فیلد مثل این پایین داشته باشی
public class pardis
{
public string name { get; set; }
public int number { get; set; }
public string City { get; set; }
private string PoAddress { get; set; }
}
همون جور که میدونید برنامه میره نام فیلد رو (مثلا name ) رو تو فایل ایکس ام ال میگرده و مقدارش رو بر میگردونه
ولی من میخوام هر سری خودم نام فیلدها رو ارسال کنم . یعنی از قبل نوشته نشده باشه و بنا به شرایط خاص نام های ( فیلد های خاص ) سرچ بشه تو فایل .
مثلا شاید در ایینده دیگه نیازی نباشه نام فلان جنس بررسی بشه و یا یک جنس جدید ثبت بشه تو برنامه میخوام وقتی این مثلا جنس جدید ثبت شد تو برنامه برنامه بتونه این جنس جدید رو به عنوان نام فیلد بفرسته و مقدارش رو برگردونه .
برای نوشتن این جوری من از توابع زیر استفاده کردم :
XmlTextWriter xmlTextWriter = new XmlTextWriter(@"C:\14.xml", ASCIIEncoding.Default);
xmlTextWriter.WriteStartDocument();
xmlTextWriter.WriteStartElement("Record");
xmlTextWriter.WriteAttributeString(textBox1.Text, textBox2.Text);
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteEndDocument();
xmlTextWriter.Close();
که تو کد های بالا
xmlTextWriter.WriteAttributeString(textBox1.Text, textBox2.Text);
یعنی نام فیلد از تکس باکس 1 و مقدار ان از تکس باکس 2 برداشته شود.
خوب همونجور که میبینید میتونم برنامه رو با فیلدهای مختلف (یعنی با هر نامی که بخوام بنویسم یعنی همون مقدار تکس باکس یک)
اما برای برگردوندنش نمیدونم باید چکار کنم
یه فایلی دارم که چند تا نام جنس رو تو خودش داره و هر سری که برنامه اجرا میشه میره اون رو دیسریالایز میکنه .
این فایل میتونه بهش اضافه شه ( چون نام اجناس هست احتمال این که جنس جدیدی اضافه شه هست پس نمیشه گفت تعداد فیلد رو هر سری من بیام اضافه کنم به برنامم و بدم بهشون برای هر جنس جدید
دوستانی که میدونن ازشون خواهش میکنم که راهنمایی کنن . با تشکر :قلب:
من یه کدی نوشتم که یه مقدار اینجا توضیح میدم شاید به درد کسی بخوره . چون فکر کنم کد جالبه . بعد هم سوالم رو میپرسم دوستانی که دستی بر اتش دارن لطفا کمکم کنند .
من یه فایل ایکس ام ال دارم که میخوام دیسریالایزش کنم ولی نه به روش معمول که فیلد ها و.... رو به صورت اماده تو کلاسم مخصوص به خودش داشته باشم .
مثلا معمولش اینه که چندتا فیلد مثل این پایین داشته باشی
public class pardis
{
public string name { get; set; }
public int number { get; set; }
public string City { get; set; }
private string PoAddress { get; set; }
}
همون جور که میدونید برنامه میره نام فیلد رو (مثلا name ) رو تو فایل ایکس ام ال میگرده و مقدارش رو بر میگردونه
ولی من میخوام هر سری خودم نام فیلدها رو ارسال کنم . یعنی از قبل نوشته نشده باشه و بنا به شرایط خاص نام های ( فیلد های خاص ) سرچ بشه تو فایل .
مثلا شاید در ایینده دیگه نیازی نباشه نام فلان جنس بررسی بشه و یا یک جنس جدید ثبت بشه تو برنامه میخوام وقتی این مثلا جنس جدید ثبت شد تو برنامه برنامه بتونه این جنس جدید رو به عنوان نام فیلد بفرسته و مقدارش رو برگردونه .
برای نوشتن این جوری من از توابع زیر استفاده کردم :
XmlTextWriter xmlTextWriter = new XmlTextWriter(@"C:\14.xml", ASCIIEncoding.Default);
xmlTextWriter.WriteStartDocument();
xmlTextWriter.WriteStartElement("Record");
xmlTextWriter.WriteAttributeString(textBox1.Text, textBox2.Text);
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteEndDocument();
xmlTextWriter.Close();
که تو کد های بالا
xmlTextWriter.WriteAttributeString(textBox1.Text, textBox2.Text);
یعنی نام فیلد از تکس باکس 1 و مقدار ان از تکس باکس 2 برداشته شود.
خوب همونجور که میبینید میتونم برنامه رو با فیلدهای مختلف (یعنی با هر نامی که بخوام بنویسم یعنی همون مقدار تکس باکس یک)
اما برای برگردوندنش نمیدونم باید چکار کنم
یه فایلی دارم که چند تا نام جنس رو تو خودش داره و هر سری که برنامه اجرا میشه میره اون رو دیسریالایز میکنه .
این فایل میتونه بهش اضافه شه ( چون نام اجناس هست احتمال این که جنس جدیدی اضافه شه هست پس نمیشه گفت تعداد فیلد رو هر سری من بیام اضافه کنم به برنامم و بدم بهشون برای هر جنس جدید
دوستانی که میدونن ازشون خواهش میکنم که راهنمایی کنن . با تشکر :قلب: