我尝试使用这样的 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; }
}
翻过高山走不出你
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>
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消