【问题标题】:How To Parse Xml in c# WPF application如何在 c# WPF 应用程序中解析 Xml
【发布时间】:2015-11-08 17:25:43
【问题描述】:

UTF 似乎不适用于我的代码。它在第 125 行说错误。

<feed>

</feed>

我已尝试指定使用的 utf,但似乎不起作用

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

【问题讨论】:

    标签: c# xml parsing


    【解决方案1】:

    使用Linq To XML让您的生活更轻松。

    以下代码可以正常工作,并且比使用低级 XmlReader 更具可读性。

    假设 xml 存储在名为 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();
    

    【讨论】:

    • int.Parse(p.Attribute("time").Value) 可以缩短为(int)p.Attribute("time"),因为XAttribute(如XElement)实现了一种转换,使这种转换更容易和更短。
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多