-
XML
با سلام به تمام برنامه نویسان عزیز :40:
دوستان به یه مشکل بر خوردم اون ه اینه که نمی تونم محتویات یه فایلXML رو استخراج کنم برنامه من به این شکله:
ابتدا یه کلاس به نام X1ایجاد کردم که محتویاتش به شکل زیره:
کد:
public String name;
public String lastname;
public String phonenumber;
وسپس در فروم اصلی تابع ها و روال های زیز رو قرار دادم:
کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.Collections;
namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public void xf(x1 xq)
{
textBox1.Text = xq.name;
textBox2.Text = xq.lastname;
textBox3.Text = xq.phonenumber;
}
public static Object a(x1 q)
{
FileStream fs = new FileStream(@"h:\h.xml",FileMode.Open,FileAccess.Re ad);
XmlSerializer xs = new XmlSerializer(typeof(x1));
ArrayList al = new ArrayList();
try
{
while (true)
{
q = (x1)xs.Deserialize(fs);
al.Add(q);
}
}
catch { fs.Close(); }
return al[0];
}
public void fx(x1 x)
{
x.name = textBox1.Text;
x.lastname = textBox2.Text;
x.phonenumber = textBox3.Text;
}
public void Save(Object o)
{
FileStream st = new FileStream(@"h:\h.xml", FileMode.OpenOrCreate, FileAccess.Write);
XmlSerializer xs = new XmlSerializer(typeof(x1));
xs.Serialize(st,o);
st.Close();
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
x1 x0 = new x1();
fx(x0);
Save(x0);
}
private void button2_Click_1(object sender, EventArgs e)
{
x1 newx1 = new x1();
newx1 = (x1)a(newx1);
xf(newx1);
}
}
}
ولی نمی تونم رکورد ها رو استخراج کنم با تابع زیز:
کد:
public static Object a(x1 q)
{
FileStream fs = new FileStream(@"h:\h.xml",FileMode.Open,FileAccess.Re ad);
XmlSerializer xs = new XmlSerializer(typeof(x1));
ArrayList al = new ArrayList();
try
{
while (true)
{
q = (x1)xs.Deserialize(fs);
al.Add(q);
}
}
catch { fs.Close(); }
return al[0];
}
کد:
private void button2_Click_1(object sender, EventArgs e)
{
x1 newx1 = new x1();
newx1 = (x1)a(newx1);
xf(newx1);
}
وهمچنین با متد زیز داده ها رو SAVEمی کنم:
کد:
public void Save(Object o)
{
FileStream st = new FileStream(@"h:\h.xml", FileMode.OpenOrCreate, FileAccess.Write);
XmlSerializer xs = new XmlSerializer(typeof(x1));
xs.Serialize(st,o);
st.Close();
کد:
x1 x0 = new x1();
fx(x0);
Save(x0);
ولی نمی دونم مشکل از کجاست دوستان اگه جواب بدن خیلی ممنون میشم.
-
سلام.
اصلاً حسش نیست کدهارو ببینم خیلی زیاده(به خاطر نام گذاری هاته:31: یکم گیج کنندست)!
کلاس:
کد:
[Serializable]
public class Person
{
public string Name { get; set; }
public string LName { get; set; }
List<string> _phones = new List<string>();
public List<string> Phones
{
get
{
return _phones;
}
}
}
توابع:
کد:
void serial(Person listPerson)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));
using (TextWriter WriteFileStream = new StreamWriter(@"C:\test.xml"))
{
xmlSerializer.Serialize(WriteFileStream, listPerson);
}
}
Person deserial()
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));
using (TextReader WriteFileStream = new StreamReader(@"C:\test.xml"))
{
return (Person)xmlSerializer.Deserialize(WriteFileStream);
}
}
مثال استفاده:
کد:
Person person = new Person(){Name = "asp", LName = "cs"};
person.Phones.Add("123");
person.Phones.Add("2424");
person.Phones.Add("7575");
serial(person);
foreach (var item in deserial().Phones)
{
MessageBox.Show(item);
}
موفق و سربلند باشید:11:.