PDA

View Full Version : سوال: ذخیره به صورت xml



bigknight
یک شنبه 08 فروردین 1389, 22:02 عصر
از یک ریچ تکست استفاده نمودم
چطور می تونم اطلاعاتم رو به صورت اکس ام ال ذخیره کنم؟

mehdi.mousavi
یک شنبه 08 فروردین 1389, 22:33 عصر
از یک ریچ تکست استفاده نمودم چطور می تونم اطلاعاتم رو به صورت اکس ام ال ذخیره کنم؟

سلام.
چه اطلاعاتی رو می خواهید بصورت XML ذخیره کنید؟ محتویات RichTextBox رو؟ محتویات مزبور چی هستن؟ Schema ی XML ای که می خواهید ذخیره کنید چیه؟

موفق باشید.

bigknight
دوشنبه 09 فروردین 1389, 19:41 عصر
هر چیزی که توی ریچ تکست نوشته میشه به صورت یه کد اکس ام ال ذخیره بشه

mehdi.mousavi
دوشنبه 09 فروردین 1389, 21:44 عصر
هر چیزی که توی ریچ تکست نوشته میشه به صورت یه کد اکس ام ال ذخیره بشه

تحت چه Schema ای؟ فرض کنیئ توی RichTextBox زده شده: "این یک متن آزمایشی است". انتظار دارید XML ای که ذخیره می کنید چی باشه؟ بنویسید تا بهتون بگم چیکار کنید. این فقط یک مثال ساده هستش:


XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("Content");
doc.AppendChild(root);
root.InnerText = this.richTextBox1.Text;
doc.Save("d:\\temp.xml");


موفق باشید.

bigknight
دوشنبه 09 فروردین 1389, 22:01 عصر
ممنون از راهنماییتون
اطلاعات در مورد شما رو الان ندارم ولی از استاد می گیرم در اختیارتون قرار می دم.:چشمک::قلب:

bigknight
جمعه 27 فروردین 1389, 21:32 عصر
سلام
من میخوام هر چند تا تگ Lable که می خوام به فایل xml اضافه کنم
در انتها یک تگ هم با نام section اضافه کنم
فقط برای هر یک از این تگها ویژگی رنگ هم در زمان ایجاد بر عهده کاربر خواهد بود
کاربر خودش لیبل را ایجاد یک رنگ بهش اختصاص می دهد و سپس لیبل بعدی را ایجاد می کند.

mohammad meta
جمعه 27 فروردین 1389, 21:37 عصر
با سلام
این کار بوسیله serialization انجام میشه.

bigknight
دوشنبه 30 فروردین 1389, 13:33 عصر
دوست عزیز متا میشه توضیح بدین در مورد سریالیزیشن؟

mehdi.mousavi
دوشنبه 30 فروردین 1389, 17:29 عصر
سلام
من میخوام هر چند تا تگ Lable که می خوام به فایل xml اضافه کنم
در انتها یک تگ هم با نام section اضافه کنم
فقط برای هر یک از این تگها ویژگی رنگ هم در زمان ایجاد بر عهده کاربر خواهد بود
کاربر خودش لیبل را ایجاد یک رنگ بهش اختصاص می دهد و سپس لیبل بعدی را ایجاد می کند.

سلام.
برای اینکار، می تونید از این کلاس، استفاده کنید:

/// <summary>
/// Provides a utility class to handle xml serialization.
/// </summary>
/// <typeparam name="T">The type to be serialized and/or deserialized.</typeparam>
public class XmlSerializer<T>
{
/// <summary>
/// Serializes the object to the given xml string.
/// </summary>
/// <param name="obj">The object to serialize.</param>
/// <returns>A serialized xml string that contains the entire object information.</returns>
public static string Serialize(T obj)
{
if (obj == null)
return null;

using (StringWriter writer = new StringWriter())
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(writer, obj);
return writer.ToString();
}
}


روش استفاده چیه؟ شما باید یک کلاس درست کنید، اسمش رو بذارید Label. سپس بالای کلاس Label، این خصیصه رو اضافه کنید:

[Serializable]

سپس، List ای از این Label ها بسازید و هر وقت خواستید اونها رو بصورت XML ذخیره کنید، کافیه بدین شکل عمل کنید:

string xml = XmlSerializer<List<Label>>.Serialize(myLabels);

بدین ترتیب، یه XML حاضر و آماده بصورت string دارید که هر کاری مایل باشید میتونید باهاش انجام بدید. جایی که گفتید Label ها رنگ داشته باشن، کافیه به کلاس Label خودتون، یه Property به اسم Color اضافه کنید و بالای این Property خصیصه XmlAttribute() رو اعمال کنید. بدین ترتیب، XML تولید شده، حاوی N تا Label خواهد بود (بصورت element) که هر Label به نوبه خودش، حاوی یک attribute رنگ هستش.

موفق باشید.