简体   繁体   中英

C# XML RPC Make Sub Class

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM