PDA

View Full Version : xml serialize بیش از یک بار



wolf_majid
دوشنبه 04 اردیبهشت 1391, 22:24 عصر
سلام دوستان
چطور میشه یک فایل xml سریالایز شده را دیسریالایز کرده در یک آرایه ریخت و به اون آرایه افزود و سپس دو باره سریالایز کرد

روش سریالایز و دیسریالایز رو بلدم اما نمی تونم فایل دیسریالایز شده رو تبدیل به یک آرایه کنم به طوری که دوباره بشه سریالایزش کرد

ممنون میشم اگر سریع جواب بدید

wolf_majid
سه شنبه 05 اردیبهشت 1391, 10:53 صبح
const string _strAddress = "c:\\test.xml";

private void btnSend_Click(object sender, EventArgs e)
{
XmlSerializer xmlser = new XmlSerializer(typeof(string));
if (!File.Exists(_strAddress))
{
StreamWriter writer = new StreamWriter(_strAddress);
xmlser.Serialize(writer, textBox1.Text);
writer.Close();
writer.Dispose();
}
else
{
StreamReader reader = new StreamReader(_strAddress);
//چطور میشه به آرایه تبدیلش کرد
ArrayList arr = (ArrayList )xmlser.Deserialize(reader);
reader.Close();
reader.Dispose();

/*
StreamWriter writer = new StreamWriter(_strAddress);
xmlser.Serialize(writer , arrStr );
writer.Close();
writer.Dispose();*/
}



textBox1.Clear();
}

wolf_majid
پنج شنبه 07 اردیبهشت 1391, 21:07 عصر
بالاخره جواب گرفتم

const string _strAddress = "c:\\test.xml";

private void btnSend_Click(object sender, EventArgs e)
{ /*
ArrayList arr = new ArrayList();
if (!File.Exists(_strAddress))
{
FileStream fs = new FileStream(_strAddress, FileMode.Create );
arr.Add(textBox1.Text); fs.Close(); fs.Dispose();
}
else
{
FileStream fs = new FileStream(_strAddress, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
arr = (ArrayList)bf.Deserialize(fs);
arr.Add(textBox1.Text); fs.Close(); fs.Dispose();
}

FileStream fs2 = new FileStream(_strAddress, FileMode.Open);
BinaryFormatter bf2 = new BinaryFormatter();
bf2.Serialize(fs2, arr); fs2.Close(); fs2.Dispose();
*/


XmlSerializer xmlser = new XmlSerializer(typeof(System.Collections.ArrayList ));
ArrayList arr = new ArrayList();
if (!File.Exists(_strAddress))
{
FileStream fs = new FileStream(_strAddress, FileMode.Create);
arr.Add(textBox1.Text); fs.Close(); fs.Dispose();
}
else
{
FileStream fs = new FileStream(_strAddress, FileMode.Open);
arr = (ArrayList)xmlser.Deserialize(fs);
arr.Add(textBox1.Text); fs.Close(); fs.Dispose();
}
FileStream fs2 = new FileStream(_strAddress, FileMode.Open);
xmlser.Serialize(fs2, arr); fs2.Close(); fs2.Dispose();
textBox1.Clear();
}