0

我有这个 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<NewSounds>
    <Artists>
      <Artist>Avril Lavigne</Artist>
      <Artist>Bob Marley</Artist>
      <Artist>Coldplay</Artist>
    </Artists>

  <Genres>
    <Genre>Rock</Genre>    
    <Genre>Jazz</Genre>
    <Genre>Metal</Genre>
  </Genres>
</NewSounds>

如何在 LINQ 中解析这个简单的 XML 文件?我对LINQ知之甚少,这就是我所拥有的:

var artists = xml.Descendants("Artists")
                    .Elements("Artist")
                    .Select(a => new Artist {
                        Name = a.Element("Artist").Value
                    }).ToArray();

问题是,它会在零件上引发System.NullReferenceException: Object reference not set to an instance of an object.错误.Select(可能是因为它找不到值?)。

我想遍历 XML 并获取<Artist>and<Genre>标记内的相关部分。

4

2 回答 2

7

a在您的Select()回调中是<Artist>元素。 a.Element("Artist")不是什么。

于 2012-11-30T16:47:42.197 回答
2

将元素转换为字符串,而不是访问Value属性。在这种情况下,如果元素为空,您将不会得到异常:

var artists = xml.Descendants("Artists")
                    .Elements("Artist")
                    .Select(a => new Artist {
                        Name = (string)a.Element("Artist")
                    }).ToArray();
于 2012-11-30T16:48:48.517 回答