我有xml返回與不同類型的對象數組。當它到達關鍵字struct時,我遇到了xmlchoiceidentifier問題。當它反序列化時,它只是返回null。C#XML反序列化
這裏是我試圖反序列化XML:
<struct>
<member>
<name>result</name>
<value><boolean>1</boolean></value>
</member>
<member>
<name>user_info</name>
<value>
<struct>
<member>
<name>First Name</name>
<value><string>John</string></value>
</member>
<member>
<name>Last Name</name>
<value><string>Smith</string></value>
</member>
</struct>
</value>
</member>
</struct>
這裏是我對反序列化的代碼:
public class ResponseStruct
{
[XmlArray("struct"), XmlArrayItem("member")]
public List<ResponseMember> Struct { get; set; }
}
public class ResponseArray
{
[XmlArray("array"), XmlArrayItem("data")]
public List<ResponseMemberValue> Array { get; set; }
}
public class ResponseMember
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("value")]
public ResponseMemberValue Value { get; set; }
}
public class ResponseMemberValue
{
[XmlChoiceIdentifier("ValueChoice"), XmlElement("boolean", typeof(bool)), XmlElement("int", typeof(int)), XmlElement("string", typeof(string)), XmlElement("datetime", typeof(DateTime)), XmlElement("double", typeof(double)), XmlElement("base64", typeof(string)), XmlElement("array", typeof(ResponseArray)), XmlElement("struct", typeof(ResponseStruct))]
public object Value { get; set; }
[XmlIgnore]
public virtual ValueType ValueChoice { get; set; }
public enum ValueType
{
@string,
@int,
@datetime,
@double,
base64,
array,
boolean,
@struct
}
}
複製你的xml,在你的VS菜單中,選擇*編輯/粘貼特殊/粘貼XML作爲類*, – Eser