为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
湖上湖 2022-06-19 16:25:43
我尝试使用这样的 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)
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

您需要使用数据类型向您的Key类添加一个更多属性string,然后您XmlSerializer将反序列化您的值CDATA。


并用[XmlText]. 此属性可以为您提供 CDATA 作为 xml 中特定节点中的文本。


所以你的Key课应该是。


[Serializable()]

public class Key

{

    [XmlAttribute("param")]

    public string param { get; set; }

    [XmlText]

    public string Text { get; set; }

}


查看完整回答
反对 回复 2022-06-19
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

检查您是否也输入了 XML。您的 XML 格式不正确。这里更正一个。CDATA 元素在末尾丢失 >。


<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>


查看完整回答
反对 回复 2022-06-19
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信