如何将XML文档转换为易于使用的C#对象? [英] How can I turn an XML document into an easy to use C# object?
问题描述
分布式项目世界社区网格"具有获取详细用户信息的能力,例如:
The Distributed project "World Community Grid" has the ability to get detailed user information such as:
<?xml version="1.0" encoding="UTF-8"?>
<MemberStatsWithTeamHistory>
<MemberStats>
<MemberStat>
<Name>makerofthings7</Name>
<MemberId>876300</MemberId>
<TeamId>0QGNJ4D832</TeamId>
<RegisterDate>2013-12-08</RegisterDate>
<LastResult>2013-12-11T11:58:51</LastResult>
<NumDevices>4</NumDevices>
<StatisticsTotals>
<RunTime>1290126</RunTime>
<RunTimeRank>415174</RunTimeRank>
<Points>61710</Points>
<PointsRank>293387</PointsRank>
<Results>175</Results>
<ResultsRank>282858</ResultsRank>
</StatisticsTotals>
<StatisticsAverages>
<RunTimePerDay>322532</RunTimePerDay>
<RunTimePerResult>7372</RunTimePerResult>
<PointsPerHourRunTime>172.19713423320002</PointsPerHourRunTime>
<PointsPerDay>15427.5</PointsPerDay>
<PointsPerResult>352.62857142857104</PointsPerResult>
<ResultsPerDay>43.75</ResultsPerDay>
</StatisticsAverages>
<Resource>
<Url>http://www.worldcommunitygrid.org/stat/viewMemberInfo.do?userName=makerofthings7&xml=true</Url>
<Description>makerofthings7</Description>
</Resource>
</MemberStat>
</MemberStats>
<TeamHistory>
<Team>
<Name>Ripple Labs</Name>
<TeamId>0QGNJ4D832 </TeamId>
<JoinDate>2013-12-08</JoinDate>
<StatisticsTotals>
<RunTime>688331</RunTime>
<Points>33548</Points>
<Results>99</Results>
</StatisticsTotals>
</Team>
</TeamHistory>
<MemberStatsByProjects>
<Project> <ProjectName>Mapping Cancer Markers</ProjectName>
<ProjectShortName>mcm1</ProjectShortName>
<RunTime>518163</RunTime>
<Points>22918</Points>
<Results>39</Results>
</Project> <Project> <ProjectName>The Clean Energy Project - Phase 2</ProjectName>
<ProjectShortName>cep2</ProjectShortName>
<RunTime>61555</RunTime>
<Points>3422</Points>
<Results>4</Results>
</Project> <Project> <ProjectName>FightAIDS@Home</ProjectName>
<ProjectShortName>faah</ProjectShortName>
<RunTime>710408</RunTime>
<Points>35370</Points>
<Results>132</Results>
</Project> </MemberStatsByProjects>
</MemberStatsWithTeamHistory>
我可以通过以下方法获取此XML:
I was able to get this XML by going here:
http://www.worldcommunitygrid.org/verifyMember.do?name=makerofthings7&code=SECRET CODE HERE
Then extracting the secret code from this page which is unique on a per person basis.
由于这是一个很好的原因,所以我想鼓励其他人使用此API并竞争"以解决问题.
Since this is such a good cause, I want to encourage other people to use this API and "compete" for a cure.
问题
如何获取此XML文件并将其转换为可以由使用用户轻松使用的C#类?
How can I take this XML file and convert it into a C# class that can easily be used by consuming users?
推荐答案
您可以使用XmlSerialzier....
You can use XmlSerialzier....
XmlSerializer serializer = new XmlSerializer(typeof(MemberStatsWithTeamHistory));
var obj = serializer.Deserialize(File.OpenRead(fname)) as MemberStatsWithTeamHistory;
PS:它与@AydinAdn的答案不同.我更改了例如MemberStatsByProjects的定义以使其正常工作
PS: It is not the same as @AydinAdn's answer. I changed, for example, MemberStatsByProjects definition to make it work
public class StatisticsTotals
{
public string RunTime { get; set; }
public string RunTimeRank { get; set; }
public string Points { get; set; }
public string PointsRank { get; set; }
public string Results { get; set; }
public string ResultsRank { get; set; }
}
public class StatisticsAverages
{
public string RunTimePerDay { get; set; }
public string RunTimePerResult { get; set; }
public string PointsPerHourRunTime { get; set; }
public string PointsPerDay { get; set; }
public string PointsPerResult { get; set; }
public string ResultsPerDay { get; set; }
}
public class Resource
{
public string Url { get; set; }
public string Description { get; set; }
}
public class MemberStat
{
public string Name { get; set; }
public string MemberId { get; set; }
public string TeamId { get; set; }
public string RegisterDate { get; set; }
public string LastResult { get; set; }
public string NumDevices { get; set; }
public StatisticsTotals StatisticsTotals { get; set; }
public StatisticsAverages StatisticsAverages { get; set; }
public Resource Resource { get; set; }
}
public class MemberStats
{
public MemberStat MemberStat { get; set; }
}
public class StatisticsTotals2
{
public string RunTime { get; set; }
public string Points { get; set; }
public string Results { get; set; }
}
public class Team
{
public string Name { get; set; }
public string TeamId { get; set; }
public string JoinDate { get; set; }
public StatisticsTotals2 StatisticsTotals { get; set; }
}
public class TeamHistory
{
public Team Team { get; set; }
}
public class Project
{
public string ProjectName { get; set; }
public string ProjectShortName { get; set; }
public string RunTime { get; set; }
public string Points { get; set; }
public string Results { get; set; }
}
public class MemberStatsWithTeamHistory
{
public MemberStats MemberStats { get; set; }
public TeamHistory TeamHistory { get; set; }
public List<Project> MemberStatsByProjects { get; set; }
}
这篇关于如何将XML文档转换为易于使用的C#对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!