PDA

View Full Version : سوال: ذخیره در فایل xml



aminsharifloo
پنج شنبه 19 فروردین 1389, 23:10 عصر
با سلام
من می تونم اطلاعاتو تو فایل xml ذخیره کنم ولی وقتی اطلاعاته دیکه ای رو ذخیره می کنم اطلاعات قبلی از بین میره چطور می تونم اطلاعات جدیدو پشت سر اطلاعات قبلی ذخیرهکنم؟ البته تو برنامه من چند کاربربطور همزمان کار می کنن؟

mehdimdp
پنج شنبه 19 فروردین 1389, 23:32 عصر
شما باید کدی که باهاش اطلاعات رو ذخیره میکنید اینجا بذارین تا بتوان اشکال کار شما را پیدا کرد.

#Faranak
جمعه 20 فروردین 1389, 11:24 صبح
با سلام
من می تونم اطلاعاتو تو فایل xml ذخیره کنم ولی وقتی اطلاعاته دیکه ای رو ذخیره می کنم اطلاعات قبلی از بین میره چطور می تونم اطلاعات جدیدو پشت سر اطلاعات قبلی ذخیرهکنم؟ البته تو برنامه من چند کاربربطور همزمان کار می کنن؟

سلام دوست عزیز
هرموقع روی فایل xmlچیزی بنویسید اطلاعات قبلی شماازبین میره
باید الگوریتمی طراحی کنید تا موقع نوشتن اطلاعات جدید اطلاعات قبلی رو هم بنویسید.

Sajjad.Aghapour
جمعه 20 فروردین 1389, 14:19 عصر
XElement element = XElement.Load(filePath);

//Create Elements Data in nodeElement object

element.Add(new XElement("NodeName", nodeElements));
element.Save(filePath);

aminsharifloo
جمعه 20 فروردین 1389, 19:22 عصر
من الگوریتیمی نوشتم ولی مشکل اینه که اگه تو سیستم دو کاربر به صورت همزمان ذخیره کنند اطلاعات ازبین میره این مشکل را چطور حل کنم که تو سیستم چند کاربر بتونن کار کنن

#Faranak
شنبه 21 فروردین 1389, 11:53 صبح
من الگوریتیمی نوشتم ولی مشکل اینه که اگه تو سیستم دو کاربر به صورت همزمان ذخیره کنند اطلاعات ازبین میره این مشکل را چطور حل کنم که تو سیستم چند کاربر بتونن کار کنن

از روشی که آقای sajadloveمدیرمحترم بخش پیشنهاد کردند استفاده کنید که دراین روش یک object ازجنس XElement تعریف کردند که به جای این که درxmlداده ها روaddکنیددراین objectکه قابلیت addکردن داره این کارو انجام میدین وسپس کل این objectرو درxmlمی نویسید بعد دوباره که کاربرdata واردکرد به همین objectاضافه می شه دوباره روی فایل xmlنوشته می شه.



XElement element = XElement.Load(filePath);

//Create Elements Data in nodeElement object

element.Add(new XElement("NodeName", nodeElements));
element.Save(filePath);


آقای sajjadloveمی شه کمی در مورداین کدبالا توضیح بدید؟مثلا این که filepathهمون مسیر فایل xmlهستش دیگه؟کلاس xelementفایل بافرمت xmlرو نگه میداره؟و...

aminsharifloo
دوشنبه 23 فروردین 1389, 21:10 عصر
با سلام من این کدو نوشتم اما موقع ذخیره اطلاعات قبلی پاک میشن




FileStream fs = new FileStream("Database\\Deviseinfo.xml", FileMode.Create);
XmlTextWriter w = new XmlTextWriter(fs, null);
w.WriteStartDocument();
w.WriteStartElement("gsmmodeminformation");
w.WriteStartElement("c1");
w.WriteString(comboDevice.Text);
w.WriteEndElement();
w.WriteStartElement("c2");
w.WriteString(comboDeviceSpeed.Text);
w.WriteEndElement();
w.WriteStartElement("c3");
w.WriteString(txtpincode.Text);
w.WriteEndElement();
w.WriteEndElement();
w.WriteEndDocument();
w.Close();
fs.Close();

aminsharifloo
دوشنبه 23 فروردین 1389, 21:14 عصر
در ادامه کدو اینطور تغییر دادم ولی اگه سیستم چند کاربره باشه و همزمان چند کاربر ذخیره کنند مشکل پیش می یاد


[LTR_INLINE]
////////////درست کردن فایل دوم

string filename = @"D:\simple for xml\eadatac\test.xml ";
string folder ="test.xml.tmp";
FileInfo fileinfo = new FileInfo(folder);
if (fileinfo.Exists)
fileinfo.Delete();
string tempfile = "test.xml.tmp";
FileStream stream = new FileStream("test.xml.tmp", FileMode.Create);
stream.Close();
////////////////////////////////////////////////////////////

FileStream fs1 = new FileStream("test.xml.tmp", FileMode.Create);
XmlTextWriter w = new XmlTextWriter(fs1, null);
w.WriteStartDocument();
w.WriteStartElement("Booklist");
w.WriteComment("This file generated by the XmltextWriter class");

// w.WriteStartElement("c1");

// w.WriteString(objbime.c1);

// w.WriteEndElement();


/////////////////////////////////////////////////////////////



bime objbime = new bime();
FileStream fs;
XmlTextReader r;
//Store retrived products in an arraycollection.

ArrayList Products = new ArrayList();
//Open a stream to the file.

///////////////اگر فایل موجود نباشد ات را درست می کند

FileInfo crxml = new FileInfo("test.xml");
if ((crxml.Exists) == false)
{
FileStream strem1 = new FileStream("test.xml", FileMode.Create);
strem1.Close();

FileStream fsc = new FileStream("test.xml", FileMode.Create);
XmlTextWriter wc = new XmlTextWriter(fsc, null);
wc.WriteStartDocument();
wc.WriteStartElement("Booklist");
wc.WriteComment("This file generated by the XmltextWriter class");
// Write the first product


wc.WriteEndDocument();
wc.Close();
fsc.Close();
fsc.Close();
















}
fs = new FileStream("test.xml", FileMode.Open);
r = new XmlTextReader(fs);
//Loop throgh the products..

while (r.Read())
{
r.Read();
if (r.NodeType == XmlNodeType.Element && r.Name == "address")
{
//objbime.ID = r.GetAttribute(0);

//objbime.Name = r.GetAttribute(1);

//Get the rest of the subtags for this product.

// Write the first product

w.WriteStartElement(r.Name );
do

{
r.Read();
if (r.Name == "c1")
{
do

{
r.Read();
if (r.NodeType == XmlNodeType.Text)
{
objbime.c1 = r.Value;

//////////

w.WriteStartElement("c1");
w.WriteString(r.Value);
w.WriteEndElement();



}
} while (r.NodeType != XmlNodeType.EndElement);
}
r.Read();

if (r.Name == "c2")
{
do

{
r.Read();
if (r.NodeType == XmlNodeType.Text)
{
objbime.c2 = r.Value;
/////////////////

w.WriteStartElement("c2");
w.WriteString(r.Value);
w.WriteEndElement();
}
} while (r.NodeType != XmlNodeType.EndElement);
}
r.Read();
if (r.Name == "c3")
{
do

{
r.Read();
if (r.NodeType == XmlNodeType.Text)
{
objbime.c3 = r.Value;
////////////////////////

w.WriteStartElement("c3");
w.WriteString(r.Value);
w.WriteEndElement();



}
} while (r.NodeType != XmlNodeType.EndElement);
}
r.Read();
if (r.Name == "c4")
{
do

{
r.Read();
if (r.NodeType == XmlNodeType.Text)
{
objbime.c4 = r.Value;

///////////////////

w.WriteStartElement("c4");
w.WriteString(r.Value);
w.WriteEndElement();



}
} while (r.NodeType != XmlNodeType.EndElement);
}
r.Read();
if (r.Name == "c5")
{
do

{
r.Read();
if (r.NodeType == XmlNodeType.Text)
{
objbime.c5 = r.Value;
////////////////

w.WriteStartElement("c5");
w.WriteString(r.Value);
w.WriteEndElement();


}
} while (r.NodeType != XmlNodeType.EndElement);
}
r.Read();
if (r.Name == "c6")
{
do

{
r.Read();
if (r.NodeType == XmlNodeType.Text)
{
objbime.c6 = r.Value;
//////////////

w.WriteStartElement("c6");
w.WriteString(r.Value);
w.WriteEndElement();


}
} while (r.NodeType != XmlNodeType.EndElement);
}
//We could check for other Product nodes.

//(like Available,Status,etc.) here.

} while (r.NodeType != XmlNodeType.EndElement);
w.WriteEndElement();
//Add the product.


}//if

}//while




//

w.WriteStartElement("address");

w.WriteStartElement("c1");
w.WriteString(TextBox1.Text);
w.WriteEndElement();
w.WriteStartElement("c2");
w.WriteString(TextBox2.Text);
w.WriteEndElement();
w.WriteStartElement("c3");
w.WriteString(TextBox3.Text);
w.WriteEndElement();
w.WriteStartElement("c4");
w.WriteString(TextBox4.Text);
w.WriteEndElement();
w.WriteStartElement("c5");
w.WriteString(TextBox5.Text);
w.WriteEndElement();
w.WriteStartElement("c6");
w.WriteString(TextBox6.Text);
w.WriteEndElement();

w.WriteEndElement();

w.WriteEndDocument();
w.Close();
fs1.Close();
fs1.Close();

r.Close();
//Display the retrived document.

fs.Close();
fs.Close();


fileinfo.CopyTo(filename, true);
fileinfo.Delete();