I am trying to strong type this XML RPC into a C# class, but my model does not work. What is wrong? Here is my model:
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class aw_gift_cards_used
{
public aw_gift_card_used aw_gift_card_used { get; set; }
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class aw_gift_card_used
{
public GiftCards GiftCards { get; set; }
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class GiftCards
{
public string core_abstract { get; set; }
}
[XmlRpcMissingMapping(MappingAction.Ignore)]
public class GiftCard
{
public string base_giftcard_amount { get; set; }
}
Here is my data:
<member>
<name>aw_gift_cards_used</name>
<value>
<struct>
<member>
<name>27</name>
<value>
<array>
<data>
<value>
<string>core_abstract</string>
</value>
<value>
<string>object</string>
</value>
<value>
<string>aw_giftcard2/giftcard_quote</string>
</value>
<value>
<nil/>
</value>
<value>
<string>aw_giftcard2/giftcard_quote_collection</string>
</value>
<value>
<boolean>0</boolean>
</value>
<value>
<boolean>1</boolean>
</value>
<value>
<nil/>
</value>
<value>
<struct>
<member>
<name>link_id</name>
<value>
<string>27</string>
</value>
</member>
<member>
<name>giftcard_id</name>
<value>
<string>40</string>
</value>
</member>
<member>
<name>quote_id</name>
<value>
<string>21895</string>
</value>
</member>
<member>
<name>base_giftcard_amount</name>
<value>
<string>200.00</string>
</value>
</member>
<member>
<name>giftcard_amount</name>
<value>
<string>200.00</string>
</value>
</member>
<member>
<name>code</name>
<value>
<string>EWU892758CKQ</string>
</value>
</member>
<member>
<name>balance</name>
<value>
<string>0.00</string>
</value>
</member>
</struct>
</value>
<value>
<boolean>1</boolean>
</value>
<value>
<struct>
<member>
<name>link_id</name>
<value>
<string>27</string>
</value>
</member>
<member>
<name>giftcard_id</name>
<value>
<string>40</string>
</value>
</member>
<member>
<name>quote_id</name>
<value>
<string>21895</string>
</value>
</member>
<member>
<name>base_giftcard_amount</name>
<value>
<string>200.00</string>
</value>
</member>
<member>
<name>giftcard_amount</name>
<value>
<string>200.00</string>
</value>
</member>
<member>
<name>code</name>
<value>
<string>EWU892758CKQ</string>
</value>
</member>
<member>
<name>balance</name>
<value>
<string>0.00</string>
</value>
</member>
</struct>
</value>
<value>
<string>link_id</string>
</value>
<value>
<boolean>0</boolean>
</value>
<value>
<array>
<data/>
</array>
</value>
<value>
<array>
<data/>
</array>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</member>
I was able to convert the XML to an XmlRpcStruct and enumerate through it. Here is my code:
public List<GiftCard> MapGiftCards(OrderInfo info) { List<GiftCard> cards = new List<GiftCard>(); if (info.aw_gift_cards_used == null) return cards; XmlRpcStruct data = info.aw_gift_cards_used as XmlRpcStruct; foreach (string key in data.Keys) { object[] dataToParse = data[key] as object[]; XmlRpcStruct st = dataToParse.ElementAt(8) as XmlRpcStruct; List<object> values = st.Values as List<Object>; GiftCard card = new GiftCard(); card.link_id = values[0].ToString(); card.giftcard_id = values[1].ToString(); card.quote_id = values[2].ToString(); card.base_giftcard_amount = ObjectConverter.DecimalConverter(values[3]); card.giftcard_amount = ObjectConverter.DecimalConverter(values[4]); card.code = values[5].ToString(); card.balance = ObjectConverter.DecimalConverter(values[6]); cards.Add(card); } return cards; }
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.