كيف يمكنني تخلص من قائمة XML باستخدام RestSharp؟

StackOverflow https://stackoverflow.com/questions/4077850

  •  28-09-2019
  •  | 
  •  

سؤال

لدي XML مثل هذا

<?xml version="1.0" encoding="utf-8"?> 
    <xml> 
            <item> 
                    <accountid>1</accountid> 
                    <accounttypeid>1</accounttypeid> 
                    <accounttypename/> 
                    <accountbankid>1</accountbankid> 
                    <accountbankname/> 
                    <accountsaldo>0</accountsaldo> 
            </item> 
            <item> 
                    <accountid>2</accountid> 
                    <accounttypeid>1</accounttypeid> 
                    <accounttypename/> 
                    <accountbankid>2</accountbankid> 
                    <accountbankname/> 
                    <accountsaldo>0</accountsaldo> 
            </item> 
            ... 
    </xml> 

أريد إلغاء تمييز قائمة XML هذه إلى كائن POCO الذي هو

public class Account 
{ 
        public string AccountId { get; set; } 
        public string AccountTypeId { get; set; } 
        public string AccountTypeName { get; set; } 
        public string AccountBankId { get; set; } 
        public string AccountBankName { get; set; } 
        public string AccountSaldo { get; set; } 
} 

لقد وجدت منتجًا رائعًا RestSharp للعمل مع عميل REST. أريد استخدام Deserializer الخاص به وحاولت 2 نهجا.

1) حاولت

request.RootElement = "item";

var response = Execute<Account>(request);

وحصلت فقط على عنصر العنصر الأول وهو منطقي.

2) عندما أحاول شيئًا مثل

request.RootElement = "xml";

var response = Execute<List<Account>>(request);

حصلت على لاغ.

أين أنا مخطئ في هذا؟

تحديث: الحل في تعليقات الإجابة المقبولة

هل كانت مفيدة؟

المحلول

يجب أن تعمل إذا قمت بإعادة تسمية Account الفئة الى Item والاستخدام Execute<List<Item>>(request). لا تحتاج إلى تحديد قيمة الجذور.

نصائح أخرى

لست متأكدًا من الخطأ ، لكنني متأكد من أن جون سيكون قريبًا لإعلامك :-) في هذه الأثناء ، لماذا لا تفعل ذلك فقط بالطريقة اليدوية:

    var root = XElement.Parse(xmlString);
    var accounts = from it in root.Element("xml").Elements("item")
                   select new Account() {
                                            AccountId = it.Element("accountid").Value,
                                            AccountTypeId = it.Element("accounttypeid").Value,
                                            AccountTypeName = it.Element("accounttypename").Value,
                                            AccountBankId = it.Element("banktypeid").Value,
                                            AccountBankName = it.Element("banktypename").Value,
                                            AccountSaldo = it.Element("accountsaldo").Value
                                        };

إنه نظيف وسهل مع Xlinq. عن طريق إضافة بعض طرق التمديد إلى xelement ، يمكنك جعلها أكثر نظافة ومرنة للعناصر/السمات المفقودة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top