PDA

View Full Version : سوال: چگونگی استفاده XML در C#



NasimBamdad
دوشنبه 28 آذر 1390, 19:55 عصر
سلام . من یک فایل XML دارم که به شکل زیر است


<?xml version="1.0" encoding="utf-8" ?>

<BILL_SPEC AA="" AB="" AC="" AD="" AE="" AF="">

<FORM_ADS BA="" BB="" BC="">
</FORM_ADS>
</BILL_SPEC>


حالا سوال من این هست که چه طوری می توانم فیلد های از دیتابیس رو بخوانم و در میان " " ( دابل کوتیشن )
قرار بدم

یعنی مثل این



<?xml version="1.0" encoding="utf-8" ?>
<BILL_SPEC AA="dbo.tbl1.id" AB="dbo.tbl1.fname" AC="dbo.tbl1.lname" AD="dbo.tbl1.meli_code" AE="dbo.tbl1.tel" AF="dbo.tbl1.address">

<FORM_ADS BA="" BB="" BC="">
</FORM_ADS>
</BILL_SPEC>

مثل تگ BILL_SPEC .

چه طوری میشه همچین کاری کرد ؟

Mahmoud Zaad
دوشنبه 28 آذر 1390, 20:20 عصر
سلام . من یک فایل XML دارم که به شکل زیر است


<?xml version="1.0" encoding="utf-8" ?>

<BILL_SPEC AA="" AB="" AC="" AD="" AE="" AF="">

<FORM_ADS BA="" BB="" BC="">
</FORM_ADS>
</BILL_SPEC>


حالا سوال من این هست که چه طوری می توانم فیلد های از دیتابیس رو بخوانم و در میان " " ( دابل کوتیشن )
قرار بدم

یعنی مثل این



<?xml version="1.0" encoding="utf-8" ?>
<BILL_SPEC AA="dbo.tbl1.id" AB="dbo.tbl1.fname" AC="dbo.tbl1.lname" AD="dbo.tbl1.meli_code" AE="dbo.tbl1.tel" AF="dbo.tbl1.address">

<FORM_ADS BA="" BB="" BC="">
</FORM_ADS>
</BILL_SPEC>

مثل تگ BILL_SPEC .

چه طوری میشه همچین کاری کرد ؟

سلام
منظورت اینه که فرمت فایل xml می خوای اینطوری بشه یا اینکه اینو داری می خوای آپدیتش کنی؟

NasimBamdad
دوشنبه 28 آذر 1390, 20:22 عصر
میخواهم یک فایل XML درست کنم به این شکل


<?xml version="1.0" encoding="utf-8" ?>
<BILL_SPEC AA="dbo.tbl1.id" AB="dbo.tbl1.fname" AC="dbo.tbl1.lname" AD="dbo.tbl1.meli_code" AE="dbo.tbl1.tel" AF="dbo.tbl1.address">

<FORM_ADS BA="" BB="" BC="">
</FORM_ADS>
</BILL_SPEC>


یعنی یک فایل درست کنم که مقادیر که در SQL دارم در بین " " ها قرار بگیرند .

Mahmoud Zaad
دوشنبه 28 آذر 1390, 20:30 عصر
این فایل رو نگاه کن:

سوداگر
دوشنبه 28 آذر 1390, 20:35 عصر
استخراج Attributeها در سی شارپ (http://barnamenevis.org/showthread.php?312972-%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1%D8%A7%D8%AC-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D9%81%D8%A7%DB%8C%D9%84-Xml-%D8%AF%D8%B1-C)

system32
دوشنبه 28 آذر 1390, 20:50 عصر
می تونی ابتدا توسط کلاس های فایل محتویات درون فایل را بخونی بعد توسط توابع رشته رشته مورد نظرتون را جایگزین کنید بعد دوباره توسط کلاس فایل فایل جدید را بازنویسی کنید.

NasimBamdad
دوشنبه 28 آذر 1390, 21:11 عصر
می تونی ابتدا توسط کلاس های فایل محتویات درون فایل را بخونی بعد توسط توابع رشته رشته مورد نظرتون را جایگزین کنید بعد دوباره توسط کلاس فایل فایل جدید را بازنویسی کنید.

مرسی دوست عزیز ، اما این روش برای افراد حرفه ای هست ، من مبتدی هستم . میشه یکم راحتر توضیح بدید یا اینکه نمونه برنامه کوچکی رو بهم بدید ؟

NasimBamdad
دوشنبه 28 آذر 1390, 21:39 عصر
شما فایل maysamfthi رو دانلود کردین؟ آخه جلوش نوشته بود 0 دیدار:متعجب:

آره دانلود کردم ، نمی دونم شاید سایت مشکل داره .

linux
دوشنبه 28 آذر 1390, 22:09 عصر
هر کی این xml را طراحی کرده کلا آزار داشته!

NasimBamdad
سه شنبه 29 آذر 1390, 16:25 عصر
الان کسی نظری نداره ؟ روشی یعنی به نظرتون نمیاد ؟

NasimBamdad
سه شنبه 29 آذر 1390, 19:32 عصر
رحمت به امواتش!

همون لینکی که دادم جناب مدیر موسوی، جواب داده بود. حتما باید پروژه رو کامپایل شده بذاریم تا راضی بشید!! اگه با اون کد مشکلی دارید بگو برطرف میکنیم.

نه دوست عزیز ، یکم حوصله داشته باش ، اگه من حرفه ای بودم که اینجا پست نمی زدم ، شما مخاطبت یک آدم آماتور هست . پس همین میشه دیگه .


var elements = XElement.Parse(xml).XPathSelectElements("//*/Font").Select(fnt => new

این قطعه کد چی کار می کنه ؟ این الان مثل متد Split کار می کنه ؟ مثلا به / رسید میزاره توی یک متغییر ؟

اما فکر کنم این پست زیاد به کارم نیاد .

ببین من اصلا فایل XML ندارم که بهش دسترسی پیدا کنم . اون قطعه کدی که در پست اول گذاشتم ممکن هست 1000 یا 10.000 بار تکرار بشه .

یعنی به تعداد خروجی یک Query بستگی داره .

مثلا ببیند :



Select fname,lname,id,codez From TBL1


این کوری می تونه 100 تا خروجی بده ، می تونه 1000000 تا .


چیزی که من نیاز دارم این هست که اون قطعه کد به تعداد خروجی این کوری ساخته بشه ( یعنی به تعداد Select Count(*) From TBL1 )

بعد هر سطر از دستور Select fname,lname,id,codez From TBL1 هم در یک قطعه کد قرار بگیرد .

یعنی این طوری



<?xml version="1.0" encoding="utf-8" ?>

<BILL_SPEC AA="fname" AB="lname" AC="id" AD="codez">


</BILL_SPEC>



. یعنی برای هر رکورد از اون دستور Select یک قطعه کد مثل این ساخته بشه .

NasimBamdad
سه شنبه 29 آذر 1390, 19:55 عصر
دوستان نظرتون در مورد این قطعه کد چیه ؟



SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = "SELECT Count(*) AS tbl1 FROM patients";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
string countz = Convert.ToString(ds.Tables[0].Rows[0]["tbl1"]);
int conz = Convert.ToInt32(countz);

////////////
SqlConnection cnn2 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cnn2.Open();
cmd2.CommandText = "SELECT fname AS fname,lname AS lname FROM patients";
SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
da2.Fill(ds2);

int i;

for (i = 0; i < conz; i++)
{
string fnamez = Convert.ToString(ds2.Tables[0].Rows[i]["fname"]);
string lnamez = Convert.ToString(ds2.Tables[0].Rows[i]["lname"]);

listBox1.Items.Add("First Name IS " + fnamez + "");
listBox1.Items.Add("Last Name IS " + lnamez + "");
}


کاری رو که می خواهم انجام میده و میریزه توی یک ListBox بعد هم ListBox رو در یک فایل XML با یک SaveDialog ذخیره می کنم

Mahmoud Zaad
سه شنبه 29 آذر 1390, 20:30 عصر
دوست عزیز شما اگه اون فایلی که من آپلود کردم خوب نگاه میکردید توی متد SaveXml همین کارو کرده با دیتاگریدویو:
شما اول توی لود فرم دیتا رو بریز توی دیتاگریدویو بعد اونو منتقل کن به فایل xml
1- توی لود فرم (شما oledb ها رو تبدیل به Sql کن:
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\dgvDB.mdb");
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM t1 ", con);
DataSet ds = new DataSet();
DataTable t1 = new DataTable();
da.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";
دو تا فیلد به اسم id و name توی بانک داریم

2- انتقال به فایل xml
XmlTextWriter xmlTextWriter = new XmlTextWriter(@"C:\Users\maysam\Desktop\m.xml", ASCIIEncoding.Default);
xmlTextWriter.WriteStartDocument();
xmlTextWriter.WriteStartElement("root");
int i;
Application.DoEvents();
for (i = 0; i <= dataGridView1.Rows.Count - 2; i++)
{
xmlTextWriter.WriteStartElement("Record");
xmlTextWriter.WriteAttributeString("id", dataGridView1.Rows[i].Cells[0].Value.ToString());
xmlTextWriter.WriteAttributeString("name", dataGridView1.Rows[i].Cells[1].Value.ToString());
xmlTextWriter.WriteEndElement();
}
xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteEndDocument();
xmlTextWriter.Close();
توضیحات رو هم خیلی کامل توی فایل اون بنده خدا نوشته!
کدها رو توی تگ C# می نویسم بهم می خوره ببخشید اگه یکم ناخواناست.

NasimBamdad
سه شنبه 29 آذر 1390, 21:07 عصر
maysamfthi (http://barnamenevis.org/member.php?199295-maysamfthi) عزیز ، دستت طلا . ممنونم .

این رو روی حساب تنبل بازی نگذار . اول که کداش رو دیدم واقعا ترسیدم :لبخند: . یعنی گفتم شاید 1 سال دیگه بفهمم چیکار کرده .

ولی خوب 2باره نگاهش می کنم و چک می کنم که اطلاعاتم بره بالا . ممنون از پیگیری شما و زحماتت .

لطف کردی