PDA

View Full Version : سوال: ذخیره اطلاعات در یک فایل XML



مهدی رحیم زاده
یک شنبه 19 خرداد 1387, 18:30 عصر
سلام
من می خوام که شماره تلفن یک سری از افراد رو توی یک فایل XML به این شکل ذخیره کنم .

<?xml version="1.0" encoding="UFT-8" ?>
<TelNumber>09155552525<TelNumber/>
<TelNumber>09155554525<TelNumber/>
<TelNumber>09155552523<TelNumber/>
<TelNumber>09155542525<TelNumber/>
<TelNumber>09155562525<TelNumber/>
و کاربر بتونه از طریق یک فرم به فایل شماره تلفن اضافه کنه . اما من هرکاری کردم نتونستم اینو درستش کنم و خیلی هم لازمش دارم . کسی هست که کمکم کنه و راهنمایی کنه .
ممنونم

combo_ci
یک شنبه 19 خرداد 1387, 18:47 عصر
private void btn_Save_Click(object sender, EventArgs e)
{

if (lstvwINFO.CheckedItems.Count == 0)
{
MessageBox.Show("آيتمي انتخاب نشده");
return;
}

saveFileDialog1.ShowDialog();

if (saveFileDialog1.FileName == "") return;

String configurationFile = saveFileDialog1.FileName;

XmlTextWriter XmlDoc = new XmlTextWriter(configurationFile, System.Text.Encoding.UTF8);
XmlDoc.Formatting = Formatting.Indented;

XmlDoc.WriteStartDocument();

XmlDoc.WriteStartElement("Report");

XmlDoc.WriteStartElement("Orginal");
XmlDoc.WriteElementString("OrginalStatment", lbl_OrginalStatment.Text);
XmlDoc.WriteEndElement();

XmlDoc.WriteStartElement("FromStatment");
XmlDoc.WriteElementString("Statment", lbl_from.Text);
XmlDoc.WriteEndElement();

XmlDoc.WriteStartElement("Fields");

for (int iItem = 0; iItem <= lstvwINFO.Items.Count - 1; iItem++)
{
XmlDoc.WriteStartElement("Field");

if (lstvwINFO.Items[iItem].Checked)
XmlDoc.WriteElementString("Ticked", "1");
else
XmlDoc.WriteElementString("Ticked", "0");

XmlDoc.WriteElementString("Name", lstvwINFO.Items[iItem].SubItems[1].Text);
XmlDoc.WriteElementString("Alias", lstvwINFO.Items[iItem].SubItems[0].Text);
XmlDoc.WriteEndElement();
}

XmlDoc.WriteEndElement();

XmlDoc.WriteStartElement("Conditions");

for (int i = 0; i < filterstring_arraylist.Count; i++)
{
XmlDoc.WriteStartElement("Condition");

XmlDoc.WriteElementString("Code", filterstring_arraylist[i].ToString());
XmlDoc.WriteElementString("Text", Filter_condition_Listbox.Items[i].ToString());

XmlDoc.WriteEndElement();
}

XmlDoc.WriteEndElement();
XmlDoc.WriteEndElement();
XmlDoc.Close();
}

اين يك قطعه كد براي save كردن تو xml هست كه من واسه كي از برنامه هام نوشتم....ببين كمكت ميكنه...بازم مشكلي بود در خدمتيم

علیرضا مداح
یک شنبه 19 خرداد 1387, 18:57 عصر
سلام دوست عزیز ،
بهتر است که از شیء DataTable و متدهای ReadXml و WriteXml استفاده نمایید ، این دو متد وظیفه خواندن/نوشتن اطلاعات شیء DataTable از/بر روی فایل Xml را بر عهده دارند ،
مثالی از MSDN :


private static void DemonstrateReadWriteXMLDocumentWithStream()
{
DataTable table = CreateTestTable("XmlDemo");
PrintValues(table, "Original table");
// Write the schema and data to XML in a memory stream.
System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);
// Rewind the memory stream.
xmlStream.Position = 0;
DataTable newTable = new DataTable();
newTable.ReadXml(xmlStream);
// Print out values in the table.
PrintValues(newTable, "New table");
}
private static DataTable CreateTestTable(string tableName)
{
// Create a test DataTable with two columns and a few rows.
DataTable table = new DataTable(tableName);
DataColumn column = new DataColumn("id", typeof(System.Int32));
column.AutoIncrement = true;
table.Columns.Add(column);
column = new DataColumn("item", typeof(System.String));
table.Columns.Add(column);
// Add ten rows.
DataRow row;
for (int i = 0; i <= 9; i++)
{
row = table.NewRow();
row["item"] = "item " + i;
table.Rows.Add(row);
}
table.AcceptChanges();
return table;
}
private static void PrintValues(DataTable table, string label)
{
// Display the contents of the supplied DataTable:
Console.WriteLine(label);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
Console.Write("\t{0}", row[column]);
}
Console.WriteLine();
}
}