PDA

View Full Version : حرفه ای: مشکل در دیسریالایز کردن فایل XML



Pedram_Parsian
پنج شنبه 23 مرداد 1393, 20:40 عصر
با سلام به دوستان

<?xml version="1.0" encoding="UTF-8"?>
<transactions>
<Transaction>
<deposit>
<account_id>1234567890123456</account_id>
<amount>20000.0</amount>
</deposit>
<deposit>
<account_id>5554567890123456</account_id>
<amount>20000.0</amount>
</deposit>
<payment>
<account_id>1234567890123456</account_id>
<amount>20000.0</amount>
</payment>
<transfer>
<from>5554567890123456</from>
<to>1234567890123456</to>
<amount>20000.0</amount>
</transfer>
</transactions>

من این کد XML رو در ورودی دارم که account_id و amount های متفاوتی در هر نوع که ممکن است Payment یا Deposit و یا Transfer باشد، وجود دارد ....

من می خوام پس از دیسرلایز کردن اون (که با اون مشکل دارم) با یه شرط مشخص کنم که type من چیه (payment,deposit,transfer) و در هر صورت مقادیر زیر مجموعه اون رو دریافت کنم ...

ممنون میشم من رو در دیسرلایز کردن این نوع xml راهنمایی کنید (لطفا نمونه کد قرار بدین نه سایت انگلیسی ... چون قبلا همه ی سایت ها رو گشتم !)

Mahmoud.Afrad
پنج شنبه 23 مرداد 1393, 22:28 عصر
به ازای هر نوع نود یعنی Transaction و deposit و ... یک کلاس ایجاد کن.
سند xml رو در یک شئ از نوع XmlDocument لود کن.
سپس از متد مناسب برای دریافت نود ریشه استفاده کن.
بعد توسط یک حلقه تمام نودهای فرزند رو چک کن و در صورت نیاز از کلاسهایی که ایجاد کردی نمونه سازی کن و پس از مقداردهی به شئ پدر اضافه کن.


کد نویسی سختی نداره. فقط کافیه بلد باشی یک نود رو بدست بیاری در اینصورت میتونی هر نوع نودی رو دریافته کنی.
کد بنویس هر جا مشکلی بود بپرس.

Hajivandian
پنج شنبه 23 مرداد 1393, 22:36 عصر
var data = XDocument.Load(File.OpenRead("data.xml"));

var query = (from item in data.Root.Elements("deposit")
select new Deposit
{
Account_Id = item.Element("account_id").Value,
Amount = Convert.ToDecimal(item.Element("amount").Value)
}).ToList();