我想解析这个XML blob:
<NFLTeams>
<Coaches>
<HeadCoach>Bill Belichick</HeadCoach>
<OffensiveCoordinator>Josh McDaniels</OffensiveCoordinator>
<DefensiveCoordinator>Unknown</DefensiveCoordinator>
</Coaches>
<Players>
<Quarterback>Jarret Stidham</Quarterback>
<WideReceiver>N'Keal Harry</WideReceiver>
</Players>
<TeamInfo>
<TeamName>Patriots</TeamName>
<StadiumCapacity>65878</StadiumCapacity>
<StadiumLocation>Foxboro, MA</StadiumLocation>
</TeamInfo>
<Coaches>
<HeadCoach>Adam Gase</HeadCoach>
<OffensiveCoordinator>Dowell Loggains</OffensiveCoordinator>
<DefensiveCoordinator>Gregg Williams</DefensiveCoordinator>
</Coaches>
<Players>
<Quarterback>Sam Darnold</Quarterback>
<WideReceiver>Breshad Perriman</WideReceiver>
</Players>
<TeamInfo>
<TeamName>Jets</TeamName>
<StadiumCapacity>82500</StadiumCapacity>
<StadiumLocation>East Rutherford, NJ</StadiumLocation>
</TeamInfo>
<Coaches>
<HeadCoach>Anthony Lynn</HeadCoach>
<OffensiveCoordinator>Shane Steichen</OffensiveCoordinator>
<DefensiveCoordinator>Gus Bradley</DefensiveCoordinator>
</Coaches>
<Players>
<Quarterback>Tyrod Taylor</Quarterback>
<WideReceiver>Keenan Allen</WideReceiver>
</Players>
<TeamInfo>
<TeamName>Chargers</TeamName>
<StadiumCapacity>27000</StadiumCapacity>
<StadiumLocation>Carson, CA</StadiumLocation>
</TeamInfo>
</NFLTeams>
并且我想将数据放入List<NFLTeam>
,其中NFLTeam
是:
public class NFLTeam
{
public string Quarterback { get; set; }
public string TeamName { get; set; }
public int StadiumCapacity { get; set; }
}
这样,如果我解析上面的blob并将其内容输出到控制台,它将看起来像这样:
Quarterback: 'Jarret Stidham', TeamName: 'Patriots', StadiumCapacity: '65878'
Quarterback: 'Sam Darnold', TeamName: 'Jets', StadiumCapacity: '82500'
Quarterback: 'Tyrod Taylor', TeamName: 'Chargers', StadiumCapacity: '27000'
我该如何使用C#7.3和.NET Framework 4.8?
void Main()
{
XDocument xdoc = XDocument.Parse(@"<NFLTeams>
<Coaches>
<HeadCoach>Bill Belichick</HeadCoach>
<OffensiveCoordinator>Josh McDaniels</OffensiveCoordinator>
<DefensiveCoordinator>Unknown</DefensiveCoordinator>
</Coaches>
<Players>
<Quarterback>Jarret Stidham</Quarterback>
<WideReceiver>N'Keal Harry</WideReceiver>
</Players>
<TeamInfo>
<TeamName>Patriots</TeamName>
<StadiumCapacity>65878</StadiumCapacity>
<StadiumLocation>Foxboro, MA</StadiumLocation>
</TeamInfo>
<Coaches>
<HeadCoach>Adam Gase</HeadCoach>
<OffensiveCoordinator>Dowell Loggains</OffensiveCoordinator>
<DefensiveCoordinator>Gregg Williams</DefensiveCoordinator>
</Coaches>
<Players>
<Quarterback>Sam Darnold</Quarterback>
<WideReceiver>Breshad Perriman</WideReceiver>
</Players>
<TeamInfo>
<TeamName>Jets</TeamName>
<StadiumCapacity>82500</StadiumCapacity>
<StadiumLocation>East Rutherford, NJ</StadiumLocation>
</TeamInfo>
<Coaches>
<HeadCoach>Anthony Lynn</HeadCoach>
<OffensiveCoordinator>Shane Steichen</OffensiveCoordinator>
<DefensiveCoordinator>Gus Bradley</DefensiveCoordinator>
</Coaches>
<Players>
<Quarterback>Tyrod Taylor</Quarterback>
<WideReceiver>Keenan Allen</WideReceiver>
</Players>
<TeamInfo>
<TeamName>Chargers</TeamName>
<StadiumCapacity>27000</StadiumCapacity>
<StadiumLocation>Carson, CA</StadiumLocation>
</TeamInfo>
</NFLTeams>");
var xelem = xdoc.Root.Elements("Players");
foreach (var el in xelem)
{
Console.WriteLine(string.Format("Quarterback: '{0}', TeamName: '{1}', StadiumCapacity: '{2}'"
, el.Element("Quarterback").Value
, ToXElement(el.NextNode).Element("TeamName").Value
, ToXElement(el.NextNode).Element("StadiumCapacity").Value));
}
}
// Define other methods and classes here
static XElement ToXElement(XNode node)
{
return node as XElement; // returns null if node is not an XElement
}
输出
Quarterback: 'Jarret Stidham', TeamName: 'Patriots', StadiumCapacity: '65878' Quarterback: 'Sam Darnold', TeamName: 'Jets', StadiumCapacity: '82500' Quarterback: 'Tyrod Taylor', TeamName: 'Chargers', StadiumCapacity: '27000'