[英]XML Serialization for API
我的任務是編寫一個庫來序列化要傳遞給xml API的數據。 我之前從未使用過這種技術,而且我正在努力一點點。 所有請求都有很多重復的字段,所以我們考慮使用派生類來處理這個問題。 xml看起來如此
<request>
<UserId></UserId>
<AccountId></AccountId>
<Token></Token>
<Method>
<methodName></methodName>
<Id></Id>
<Date></Date>
</Method>
</request>
我們當時正在考慮使用這樣的東西
public class Request
{
[XmlElement("token")]
public string token { get; set; }
[XmlElement("userId")]
public int userId { get; set; }
[XmlElement("accountId")]
public int accountId { get; set; }
}
接着
public class Method : Request
{
[XmlElement("methodName")]
public string methodName { get; set; }
[XmlElement("Id")]
public int Id { get; set; }
[XmlElement("Date")]
public string Date { get; set; }
}
我可以使用XmlSerializer s = new XmlSerializer(typeof(Method));
來序列化沒問題XmlSerializer s = new XmlSerializer(typeof(Method));
但它沒有嵌套繼承的類,我可以弄清楚如何/在哪里可以添加xmlElement(“方法”)。 有人可以幫我正確創建類嗎?
編輯我可以使這個工作正常,如果我從方法中刪除繼承並包括方法作為請求的類 - 但是,由於我們將擁有大量不同的調用,我試圖使這成為一個很好的可重用代碼片段
您需要此類結構來嵌套Method對象:
public class Request
{
[XmlElement("token")]
public string token { get; set; }
[XmlElement("userId")]
public int userId { get; set; }
[XmlElement("accountId")]
public int accountId { get; set; }
[XmlElement("method")]
public Method method { get; set; }
}
public class Method
{
[XmlElement("methodName")]
public string methodName { get; set; }
[XmlElement("Id")]
public int Id { get; set; }
[XmlElement("Date")]
public string Date { get; set; }
}
如果XML中包含重復的Method對象列表,請更改此行
public Method method { get; set; }
至
public List<Method> method { get; set; }
這就是我如何運作的方式。 它在我的初始問題中輸出如上所述的xml。 我確實學到了一些有趣的東西,比如不需要[serializable]而不必設置[XmlElement],除非我需要與我的屬性不同的東西。
public class Headers
{
public string Token { get; set; }
public int UserId { get; set; }
public int AccountId { get; set; }
[XmlIgnore]
public Uri host { get; set; }
public static string requestMethod = "POST";
}
[XmlRoot("request")]
public class GetActivityDetailsByActivityId : Headers
{
public string responseType = "ResponseGetActivityDetailsByActivityId";
public class MethodDetails
{
public string methodName = "GetActivityDetailsByActivityId";
public int activtyId;
public DateTime activityDate;
}
[XmlElement("Method")]
public MethodDetails Method = new MethodDetails();
public GetActivityDetailsByActivityId(int activityId, DateTime activityDate,Headers headers)
{
this.Method.activityDate = activityDate;
this.Method.activtyId = activityId;
this.AccountId = headers.AccountId;
this.Token = headers.Token;
this.UserId = headers.UserId;
this.host = headers.host;
}
GetActivityDetailsByActivityId()
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.