简体   繁体   中英

How To Parse Xml in c# WPF application

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();

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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM