如何将XML文档转换为易于使用的C#对象? [英] How can I turn an XML document into an easy to use C# object?

查看:89
本文介绍了如何将XML文档转换为易于使用的C#对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

分布式项目世界社区网格"具有获取详细用户信息的能力,例如:

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&amp;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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆