PDA

View Full Version : مشکل با لود اطلاعات در xml



asemaneiran
شنبه 12 مرداد 1392, 18:24 عصر
سلام
من یه فایل xml با فیلدهای id , nam , famil , age
دارم
از این کد استفاده می کنم و وقتی کاربر مورد نظر رو وارد کنه اطلاعات اون رو وارد تکس باکس ها می کنم
string xmlPath = Path.Combine(Application.StartupPath, "My1.xml");
XmlDocument xmlDoc = new XmlDocument();
XmlNode rootNode;

if (File.Exists(xmlPath))
{
xmlDoc.Load(xmlPath);
rootNode = xmlDoc.DocumentElement;
}
else
{
MessageBox.Show("File is not exist!");
}
XmlNodeList personNodes = xmlDoc.GetElementsByTagName("omoomi");

foreach (XmlNode node in personNodes)
{
string id = node["id"].InnerText;

if (id == textBox1.Text )
{
textBox1.Text = node["Name"].InnerText ;
textBox3.Text=node["Age"].InnerText ;
textBox2.Text=node["Familly"].InnerText ;
textBox4.Text=node["id"].InnerText ;
break;
}
}

xmlDoc.Save(xmlPath);
الان مشکلم اینه که چطور می تونم اطلاعات ایدی رکورد یکی مونده به اخر رو در تکس باکس هام نشون بدم (در لود فرم ) و نیازی به وارد کردن ایدی توسط کاربر نباشه و اتومات اطلاعات رکورد یکی مونده به اخر که در xml ثبت شده رو بده
ممنون میشم راهنماییم کنید

mousa1992
شنبه 12 مرداد 1392, 18:36 عصر
XmlDocument doc = new XmlDocument();
XmlNodeList nodes = doc.ChildNodes;
XmlNode selectedNode = nodes[nodes.Count - 2];

asemaneiran
یک شنبه 13 مرداد 1392, 08:06 صبح
XmlDocument doc = new XmlDocument();
XmlNodeList nodes = doc.ChildNodes;
XmlNode selectedNode = nodes[nodes.Count - 2];



سلام
ممنونم ازتون میشه بگید این کد رو کجا بذارم؟؟؟
ممنون

danialafshari
یک شنبه 13 مرداد 1392, 09:55 صبح
سلام
مبحث تکراریه
قبل از ایجاد تاپیک جستجو کنید
http://barnamenevis.org/showthread.php?408599-%DA%86%D9%87%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-%D8%A7%D8%B5%D9%84%DB%8C-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-xml

asemaneiran
دوشنبه 14 مرداد 1392, 09:23 صبح
سلام
منونم اقای
danialafshari
اره این تاپیک رو دیدم اما درباره یافتن تعداد ایتم های xml و ایتم یکی مونده به اخر نمیدونم چکار کنم؟
من تا حالا با xml کار نکردم
ممنون میشم راهنمایی بفرماید
ممنون

asemaneiran
دوشنبه 14 مرداد 1392, 09:34 صبح
سلام
ممنون اقای danialafshari
بله من تاپیک رو دیده بودم اما در مورد بدست اوردن تعداد ایتم های درج شده در mxml و ایتم یکی مونده به اخر نمیدونم چکار کنم
من قبلا با باml کار نکردم
ممنون میشم در این مورد راهنماییم بفرمایید
ممنون

asemaneiran
دوشنبه 14 مرداد 1392, 09:34 صبح
سلام
ممنون اقای danialafshari
بله من تاپیک رو دیده بودم اما در مورد بدست اوردن تعداد ایتم های درج شده در xml و ایتم یکی مونده به اخر نمیدونم چکار کنم
من قبلا با باml کار نکردم
ممنون میشم در این مورد راهنماییم بفرمایید
ممنون

mousa1992
دوشنبه 14 مرداد 1392, 11:35 صبح
ممنونم ازتون میشه بگید این کد رو کجا بذارم؟؟؟
کجاش بذاری :قهقهه:
اقا دمت گرم کپی پیست :متفکر:
تو کدی که قرار دادم لیستی از node ها رو گرفتم و از این لیست ایتم یکی مونده به اخر رو انتخاب کردم - شما هر شماره ای که بدی همونی node رو برات برمیگردونه

موفق

asemaneiran
دوشنبه 14 مرداد 1392, 18:29 عصر
کجاش بذاری :قهقهه:
اقا دمت گرم کپی پیست :متفکر:
تو کدی که قرار دادم لیستی از node ها رو گرفتم و از این لیست ایتم یکی مونده به اخر رو انتخاب کردم - شما هر شماره ای که بدی همونی node رو برات برمیگردونه

موفق

چه جوری آخه


سلام
چرا می خندید..!!!!؟:عصبانی++:
کپی پیست نه..
اول باید بفهمم این کد چکار می کنه , بعد خودم کاری که بخوام رو ازش درمیارم..
من با این کد میتونم تعداد ایتم های xml رو بگیرم

XmlNodeList personNodes = xmlDoc.GetElementsByTagName("Person");
textBox5.Text=personNodes.Count.ToString();

نمیدونم چطور بگم مثلا ایتم شماره پنج رو لود کنه؟
اگه نمیخندید و عصبانی نمیشه
نجات بده(لطفا)
ممنون

mousa1992
دوشنبه 14 مرداد 1392, 18:48 عصر
سلام
شما ی xmlNodeList داری که مجموعه ای از نود ها هست ،درسته ؟ ( personNodes )

خب حالا از این مجموعه شما میتونی با اندیس گذاری هر نودی رو که میخوای بدست بیاری


personNodes[0]

این میشه اولین نود از مجموعه ، درسته ؟
خب حالا شم مثلا میخوای یکی مونده به اخر رو بدست بیاری

prsonNodes[personNodes.Count-2]

این میشه یکی مونده به اخر - چرا ؟ چونکه شماره گذاری توی لیست ها و ارایه ها در زبان سی شارپ از صفر شروع میشه ؛ حالا شما وقتی ی مجموعه 10 عضوی داری ، شمار 9 میشه اندیس یکی مونده به اخر و 8 میشه یکی مونده به اخر و هرکدومو که بخوای بدست بیاری

موفق باشی

asemaneiran
دوشنبه 14 مرداد 1392, 19:02 عصر
سلام
شما ی xmlNodeList داری که مجموعه ای از نود ها هست ،درسته ؟ ( personNodes )

خب حالا از این مجموعه شما میتونی با اندیس گذاری هر نودی رو که میخوای بدست بیاری


personNodes[0]

این میشه اولین نود از مجموعه ، درسته ؟
خب حالا شم مثلا میخوای یکی مونده به اخر رو بدست بیاری

prsonNodes[personNodes.Count-2]

این میشه یکی مونده به اخر - چرا ؟ چونکه شماره گذاری توی لیست ها و ارایه ها در زبان سی شارپ از صفر شروع میشه ؛ حالا شما وقتی ی مجموعه 10 عضوی داری ، شمار 9 میشه اندیس یکی مونده به اخر و 8 میشه یکی مونده به اخر و هرکدومو که بخوای بدست بیاری

موفق باشی

ممنون
میدونم اینارو
خوب چطور بگم نام این ایتم در تکس باکس اول بره
فامیل در تکس دوم و سن در تکس سوم؟؟؟
ممنون میشم بگید

Mahmoud.Afrad
دوشنبه 14 مرداد 1392, 19:09 عصر
لیست گره ها رو که داری کافیه با اندیس بهش دسترسی پیدا کنی.
اندیس یکی مونده به آخر هم از تعداد گره ها 2 تا کمتره.

XmlNodeList personNodes = xmlDoc.GetElementsByTagName("Person");
if (personNodes.Count > 1)
{
XmlNode node = personNodes[personNodes.Count - 2];

textBox1.Text = node["Name"].InnerText;
textBox2.Text = node["Familly"].InnerText;
textBox3.Text = node["Age"].InnerText;
textBox4.Text = node["id"].InnerText;
}

asemaneiran
سه شنبه 15 مرداد 1392, 09:32 صبح
سلام
ممنونم ازتون
یه دنیا..
فقط
من برا حذف از این کد که فکر میکنم خودتون در یک تاپیک پاسخ داده بودید
استفاده می کنم

string xmlPath = Path.Combine(Application.StartupPath, "MyDatabase1.xml");
XmlDocument xmlDoc = new XmlDocument();
XmlNode rootNode=null;



if (File.Exists(xmlPath))
{
xmlDoc.Load(xmlPath);
rootNode = xmlDoc.DocumentElement;
}
else
{
MessageBox.Show("File is not exist!");
}
XmlNodeList personNodes = xmlDoc.GetElementsByTagName("Person");
textBox5.Text = personNodes.Count.ToString();


if (personNodes.Count > 1)
{
for (int i = personNodes.Count - 1 ; i >= 0 ; i--)
{
XmlNode node = personNodes[i];
string name = node["Name"].InnerText;
string familly = node["Familly"].InnerText;
string age = node["Age"].InnerText;

if (name == textBox1.Text && familly == textBox2.Text && age == textBox3.Text)
{
rootNode.RemoveChild(node);
break;
}
}
}


xmlDoc.Save(xmlPath);


میخواستم بدونم راهی هست که بشه با زدن کلید حذف کل ایتم های داخل xml همگی حذف بشن؟
ممنون میشم بگید..
بازم ممنون

Mahmoud.Afrad
سه شنبه 15 مرداد 1392, 16:42 عصر
یه مقدار توجه کنید متوجه میشید. قسمت آخر رو به اینصورت بنویسید تا همه حذف بشه:

XmlNodeList personNodes = xmlDoc.GetElementsByTagName("Person");

foreach (var node in personNodes)
{
rootNode.RemoveChild(node);
}
xmlDoc.Save(xmlPath);