Reputation: 1826
The UTF don't seem to work on my code. It is saying error in line 125.
<feed>
</feed>
I have tried specifying what utf am using but dont seem to work
var results = XElement.Load("games.xml")
.Element("content.items")
.Element("content.head")
.Element("content.body")
.Elements("results")
.Elements("result");
var query = (from result in results
let homeTeam = result.Element("home-team")
let awayTeam = result.Element("away-team")
let lastScorer = result.Descendants("scorers").Elements("scorer").OrderByDescending(p => (int)p.Attribute("time")).FirstOrDefault()
select new
{
HomeTeam = homeTeam.Element("team-name").Value,
AwayTeam = awayTeam.Element("team-name").Value,
HomeTeamScore = homeTeam.Element("score").Value,
AwayTeamScore = awayTeam.Element("score").Value,
LastScorerName = lastScorer != null ? lastScorer.Element("player-name").Value : string.Empty,
LastScoreTime = lastScorer != null ? (int?)lastScorer.Attribute("time") : null
}).ToList();
Upvotes: 1
Views: 2649
Reputation: 23200
Make your life easier by using Linq To XML.
The following code just work and is more readable than using the low-level XmlReader.
Assuming that the xml is stored in a file named games.xml.
var results = XElement.Load("games.xml")
.Element("content.items")
.Element("content.head")
.Element("content.body")
.Elements("results")
.Elements("result");
var query = (from result in results
let homeTeam = result.Element("home-team")
let awayTeam = result.Element("away-team")
let lastScorer = result.Descendants("scorers").Elements("scorer").OrderByDescending(p => (int)p.Attribute("time")).FirstOrDefault()
select new
{
HomeTeam = homeTeam.Element("team-name").Value,
AwayTeam = awayTeam.Element("team-name").Value,
HomeTeamScore = homeTeam.Element("score").Value,
AwayTeamScore = awayTeam.Element("score").Value,
LastScorerName = lastScorer != null ? lastScorer.Element("player-name").Value : string.Empty,
LastScoreTime = lastScorer != null ? (int?)lastScorer.Attribute("time") : null
}).ToList();
Upvotes: 4