PDA

View Full Version : حرفه ای: استفاده System.Xml.Linq در فریمورک 2



shahryari
جمعه 18 مرداد 1392, 19:12 عصر
با سلام
همونطور که میدونید System.Xml.Linq در نسخه 2 فریمورک وجود نداره
چطوری میتونم اینکار رو انجام بدم
به روش زیر عمل کردم اما جواب نگرفتم


Create a new console application
Keep only System and System.Core as referenced assemblies
Set Copy Local to true for System.Core, because it does not exist in .NET 2.0
Use a LINQ query in the Main method. For example the one below.
Build
Copy all the bin output to a machine where only .NET 2.0 is installed
Run

با توجه به بند سه که گفته System.Core را کپی لوکالش را برابر ترو کنم ، اما System.Core به لوکل کپی نمیشه :افسرده:

shahryari
یک شنبه 20 مرداد 1392, 19:04 عصر
دوستان کسی تا حالا به این مشکل برنخورده ؟؟

parvizwpf
یک شنبه 20 مرداد 1392, 19:09 عصر
مگه از چه ویژوالی استفاده میکنید؟ چرا آپدیت نمیکنید؟

shahryari
یک شنبه 20 مرداد 1392, 19:21 عصر
مگه از چه ویژوالی استفاده میکنید؟ چرا آپدیت نمیکنید؟
:متفکر: ...
از ویژوال "استدیو" :لبخند:
------------------------
در سیستم های مخاطبانم نسخه 2 فریمورک نصب است
منهم به دلایلی از فضای نامی اکس ام ال لینکیو استفاده کردم
یه جایی خوندم از این روشی که در پست یک هست میشه جواب گرفت
اما نشد ....

parvizwpf
یک شنبه 20 مرداد 1392, 19:25 عصر
یعنی برنامه داره روی سیستم دیگه نصب میشه؟ چرا دانت نت فریم ورک نمیریزید روی اون سیستمها؟

shahryari
یک شنبه 20 مرداد 1392, 19:30 عصر
یعنی برنامه داره روی سیستم دیگه نصب میشه؟ چرا دانت نت فریم ورک نمیریزید روی اون سیستمها؟
برنامه حدود یک سالی است که در سیتمشون نصبه (حدود 400 مشتری) در آپدیت جدید برنامه یک امکانی را میخوام اضافه کنم که ... یوزینگ سیستم دات اکس ام ال دات لینکیو ...
اما این فضا را دانت 2 نمشناسه
طبق روش پست یک من باید نسخه 2 را به 3.5 تغییر بدم و اون کار رو انجام بدم و آپلود کنم و به مشتریان اس ام اس بزنم که نرم افزارشون رو بروزرسانی بکنند و ... ادامه ماجرا

parvizwpf
یک شنبه 20 مرداد 1392, 19:38 عصر
من روش یک ورو تست نکردم خب. الان توی سیستم مشتریان دات نت 2 نصبه خب حالا مشکلیه اگه 3.5 بشه؟ تنها راهیه که بذهنم میرسه.وقتی پیکجی تو فریم ورک قبلی نیست یعنی چی، یعنی برو یراغ نصب فریمورک مخصوص به خودش

shahryari
یک شنبه 20 مرداد 1392, 19:57 عصر
من روش یک ورو تست نکردم خب. الان توی سیستم مشتریان دات نت 2 نصبه خب حالا مشکلیه اگه 3.5 بشه؟ تنها راهیه که بذهنم میرسه.وقتی پیکجی تو فریم ورک قبلی نیست یعنی چی، یعنی برو یراغ نصب فریمورک مخصوص به خودش
با تشکر از نظر شما نصب 3.5 روی 400 سیستم (که معلوم کدومشون دوست دارن بروزرسانی کنن و کدومشون دوست ندارن ، 2 ساعت فریمورک را براشون توضیح بدم ، بعد از 2 ساعت نحوه نصب و دانلود 3.5 را ، برای کسانی که اطلاعاتشون در حد ویندوز هست) کار معقولی نیست عمر نوح می خواهد و صبر ایوب و گنج قارون
.
.
نظر سایر مهندسین عزیز؟؟

parvizwpf
یک شنبه 20 مرداد 1392, 20:05 عصر
وقتی نرم افزار بروز بخوان باید آپدیت کنن. سرچی زدم چیزی نیافتم.

plus
یک شنبه 20 مرداد 1392, 20:23 عصر
با توجه به شرایط شما پیشنهاد میکنم بیخیال LINQ بشید.با روشی که گفتین، شاید بشه در دات نت 2.0 از LINQ به نحوی استفاده کرد اما راه اصولی نیست و میتونه مشکل ساز بشه.
LINQ چیزه خوبیه اما با توجه به شرایط شما ارزش NET. 3.5 یا درد سر کاری که میخواین بکنید رو نداره.بدون LINQ هم میشه کار کرد.

shahryari
یک شنبه 20 مرداد 1392, 21:17 عصر
با توجه به شرایط شما پیشنهاد میکنم بیخیال LINQ بشید.با روشی که گفتین، شاید بشه در دات نت 2.0 از LINQ به نحوی استفاده کرد اما راه اصولی نیست و میتونه مشکل ساز بشه.
LINQ چیزه خوبیه اما با توجه به شرایط شما ارزش NET. 3.5 یا درد سر کاری که میخواین بکنید رو نداره.بدون LINQ هم میشه کار کرد.
با تشکر
معادل کد زیر بدون لینکیو وجود دارد؟
var xml = System.Xml.Linq.XDocument.Parse(Properties.Resourc es._545 );

plus
یک شنبه 20 مرداد 1392, 21:20 عصر
شما دقیقا میخواین چکار کنید؟ یک Xml Document رو Parse کنید و Node هاش رو بخونید و ...؟

XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...</Names>"

XmlNodeList xnList = xml.SelectNodes("/Names/Name");
foreach (XmlNode xn in xnList)
{
string firstName = xn["FirstName"].InnerText;
string lastName = xn["LastName"].InnerText;
Console.WriteLine("Name: {0} {1}", firstName, lastName);
}

LINQ کار با Xml رو راحتتر میکنه اما تا اونجا که من میدونم کاری نیست که تو حالت عادی بدون LINQ نشه انجام داد.اگه توضیح بیشتر در مورد کار که میخواین بکنین بدین بهتر میشه کمک کرد.

shahryari
یک شنبه 20 مرداد 1392, 21:24 عصر
با تشکر از شما
من یک سند اکس ام ال دارم که در ریسورسیز پروژه ام اضافه کردم
با این کد محتواتش رو در دیتا تیبلم میخونم
var xml = System.Xml.Linq.XDocument.Parse(Properties.Resourc es._545 );
DataSet1.mytable.Readxml(xml.CreateReader);
با این دو خط و استفاده از System.Xml.Linq.XDocument.Parse مشکلم حل میشه
معادل این کد بدون لینکیو چیست؟؟

plus
یک شنبه 20 مرداد 1392, 21:37 عصر
میتونید از متد ReadXml (http://msdn.microsoft.com/en-US/library/yfxbc3by%28v=vs.80%29.aspx)مربوط به DataTable استفاده کنید.

MemoryStream xmlStream = new MemoryStream(Properties.Resources._545);
DataTable newTable = new DataTable();
newTable.ReadXml(xmlStream);

پ.ن: یعنی چی نتیجه نگرفتین.مشکلش کجاست؟ (البته من کدی که اول گذاشته بودم رو ویرایش کردم)

shahryari
دوشنبه 21 مرداد 1392, 09:10 صبح
سلام
سند اکس ام ال من تقریبا به این شکل هست

<?xml version="1.0" standalone="yes"?>
<DataSet1 xmlns="http://tempuri.org/DataSet1.xsd">
<table_test>
<ID>1</ID>
<f_name>Ali</f_name>
<L_name>mohammadi</L_name>
<Tell>09365222222</Tell>
</table_test>
</DataSet1>
شما اینها را در یک فایل متنی با پسوند xml ذخیره کنید تقریبا متوجه منظور بنده خواهید شد

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 09:39 صبح
یه نگاهی به overloadهای اون متد بندازید بد نیست.


string filePath = System.IO.Path.Combine(Application.StartupPath, "db.xml");
DataSet ds = new DataSet();
ds.ReadXml(filePath, XmlReadMode.Auto);

shahryari
دوشنبه 21 مرداد 1392, 11:00 صبح
یه نگاهی به overloadهای اون متد بندازید بد نیست.


string filePath = System.IO.Path.Combine(Application.StartupPath, "db.xml");
DataSet ds = new DataSet();
ds.ReadXml(filePath, XmlReadMode.Auto);

لطف کردین و تشکر میکنم از حسن توجه
فایل اکس ام ال در ریسورسیز پروژه هست نه پوشه اجرایی

Mahmoud.Afrad
دوشنبه 21 مرداد 1392, 11:49 صبح
یک استریم بگیرید بدید به متد.

byte[] b = Encoding.UTF8.GetBytes(Properties.Resources.Resour ceName);
MemoryStream ms = new MemoryStream(b);
DataSet ds = new DataSet();
ds.ReadXml(ms);

ResourceName هم منظور اسم ریسورس هست.