如何反序列化列表以获取元素值

我尝试使用这样的 XML 测试对我的 Web API 的 1 个 HTTP POST XML 请求:


<trx>

            <header>...</header>

            <body>

        <unity keycnt="4">

            <key param="param1"><![CDATA[value1]]</key>

            <key param="param2"><![CDATA[value2]]</key>

            <key param="param3"><![CDATA[value3]]</key>

            <key param="param4"><![CDATA[value4]]</key>

            </unity>

        </body>

        </trx>

当我使用这样的类列表反序列化该请求时:


 [Serializable()]

    [XmlRoot(ElementName="trx")]

    public class Trx {

        [XmlElement("header")]

        public Header Header { get; set;}

         [XmlElement("body")]

        public Body Body{ get; set;}

    }

班级正文:


 [Serializable()]

    public class Body{

        [XmlElement("unity")]

        public Unity Unity{ get; set;}

    }

统一类:


  [Serializable()]

        public class Unity{

            [XmlAttribute("keycnt")]

            public string keycnt{ get; set;}

       [XmlElement("key")]

            public List<Key> KeyList{ get; set;}

        }

类键:


  [Serializable()]

            public class Key{

                [XmlAttribute("param")]

                public string param{ get; set;}

            }

反序列化后,我得到了除了键列表项的值之外的所有属性。(value1, value2, value3, value4)


湖上湖
浏览 136回答 2
2回答

胡说叔叔

您需要使用数据类型向您的Key类添加一个更多属性string,然后您XmlSerializer将反序列化您的值CDATA。并用[XmlText]. 此属性可以为您提供 CDATA 作为 xml 中特定节点中的文本。所以你的Key课应该是。[Serializable()]public class Key{&nbsp; &nbsp; [XmlAttribute("param")]&nbsp; &nbsp; public string param { get; set; }&nbsp; &nbsp; [XmlText]&nbsp; &nbsp; public string Text { get; set; }}

翻过高山走不出你

检查您是否也输入了 XML。您的 XML 格式不正确。这里更正一个。CDATA 元素在末尾丢失 >。<trx><header></header><body>&nbsp; &nbsp; <unity keycnt="4">&nbsp; &nbsp; &nbsp; &nbsp; <key param="param1"><![CDATA[value1]]></key>&nbsp; &nbsp; &nbsp; &nbsp; <key param="param2"><![CDATA[value2]]></key>&nbsp; &nbsp; &nbsp; &nbsp; <key param="param3"><![CDATA[value3]]></key>&nbsp; &nbsp; &nbsp; &nbsp; <key param="param4"><![CDATA[value4]]></key>&nbsp; &nbsp; </unity></body>
打开App,查看更多内容
随时随地看视频慕课网APP