【问题标题】:C# looping through XelementC# 循环遍历 Xelement
【发布时间】:2016-06-08 20:59:46
【问题描述】:
string webUrlCurrentGame = "";//usually the url 
var readerCurrentGame = JsonReaderWriterFactory.CreateJsonReader(
           Encoding.UTF8.GetBytes(webClient.DownloadString(webUrlCurrentGame)), 
           new System.Xml.XmlDictionaryReaderQuotas());
var currentGameRoot = XElement.Load(readerCurrentGame);
string gameMode = currentGameRoot.XPathSelectElement("//gameMode").Value;
string championId = currentGameRoot.XPathSelectElement("//championId").Value;
string SummonerName = currentGameRoot.XPathSelectElement("//summonerName").Value;

问题是 XML 中有 10 个召唤者名称,我如何从它们中获取值?

【问题讨论】:

  • 请包含您的 XML(或它派生的 JSON),以便我们为您提供帮助。

标签: c# json xml


【解决方案1】:

通常使用 linq-to-xml,如果选择器有单数版本,那么也可能有复数版本。

在您的情况下,currentGameRoot.XPathSelectElements("//summonerName") 将返回一个包含所有“summonerName”元素的IEnumerable

【讨论】:

    【解决方案2】:

    改变

    string SummonerName = currentGameRoot.XPathSelectElement("//summonerName").Value;
    

    var SummonerNames = currentGameRoot.Descendants("summonerName")
                                 .Select(sn => (string)sn)
                                 .ToList();
    

    如果您使用sn.Value 并且sn 为空,您将获得NullExceptionError

    【讨论】:

    • 好吧,我已经改变了这一点,但现在我在返回值时遇到了问题。起初我使用 MessageBox.Show(SummonerName);
    • 如果您想从 List 返回值,请使用 MessageBox.Show(string.Join(",",SummonerName)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多