Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用LINQ解析C#中的XML文件?_C#_Asp.net_Xml_Asp.net Mvc_Linq - Fatal编程技术网

如何使用LINQ解析C#中的XML文件?

如何使用LINQ解析C#中的XML文件?,c#,asp.net,xml,asp.net-mvc,linq,C#,Asp.net,Xml,Asp.net Mvc,Linq,我有一个XML文件: <?xml version="1.0" encoding="utf-8"?> <NewSounds> <Artists> <Artist>Avril Lavigne</Artist> <Artist>Bob Marley</Artist> <Artist>Coldplay</Artist> </Artists&

我有一个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>
问题是,它抛出了一个
System.NullReferenceException:对象引用未设置为对象的实例。
上出现错误。选择部分(可能是因为它找不到值?)


我想遍历XML并获取
标记中的相关部分

您的
Select()
回调中的
元素
a.Element(“艺术家”)
什么都不是。

将元素转换为字符串,而不是访问
属性。在这种情况下,如果元素为null,则不会出现异常:

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