我正嘗試從c#構建服務器反序列化CCTray.xml的XML內容。將CCTray內容XML反序列化爲對象列表
Tje XML內容有一個父'Projects'元素,下面有一個'Project'元素的數組。每個項目元素都有多個屬性。
我創建了一個項目的模型:
[XmlRoot("Projects")]
public class ProjectCollection
{
public ProjectCollection() { Projects = new List<Project>(); }
[XmlArray("Project")]
public List<Project> Projects { get; set; }
}
和每個項目的典範:
public class Project
{
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("Activity")]
public string Activity { get; set; }
[XmlElement("lastBuildStatus")]
public string LastBuildStatus { get; set; }
[XmlElement("lastBuildLabel")]
public string LastBuildLabel { get; set; }
[XmlElement("WebUrl")]
public string WebUrl { get; set; }
[XmlElement("LastBuildTime")]
public DateTimeOffset LastBuildTime { get; set; }
}
我嘗試和序列化從HttpClient的類似的響應:
var xmlStream = await response.Content.ReadAsStreamAsync();
var serializer = new XmlSerializer(typeof(ProjectCollection));
var projects = (ProjectCollection)serializer.Deserialize(xmlStream);
結果其中一個是空的ProjectCollection對象。
我知道我必須錯誤地將XML映射到我的對象,但我看不出它錯在哪裏。
正在返回的XML的樣本是:
<?xml version="1.0" encoding="utf-8"?>
<Projects>
<Project name="Company.Project1.Api :: Build" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="1.0.0.203" lastBuildTime="2017-03-21T10:56:53" webUrl="http://build-company.com:8153/go/pipelines/Company.Project1.Api/203/Build/1" />
<Project name="Company.Project2.Api :: Build :: Build" activity="Sleeping" lastBuildStatus="Success" lastBuildLabel="1.0.0.203" lastBuildTime="2017-03-21T10:56:53" webUrl="http://build-company.com:8153/go/tab/build/detail/Company.Project2.Api/203/Build/1/Build" />
</Projects>
什麼我需要做正確反序列化這個XML到我的對象?
謝謝
使用RestSharp它會更容易反序列化 –