我有这个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>
和<Genre>
标记内的相关部分。
答案 0 :(得分:7)
a
回调中的 Select()
是<Artist>
元素。 a.Element("Artist")
不是什么。
答案 1 :(得分:2)
将元素转换为字符串,而不是访问Value
属性。在这种情况下,如果element为null,则不会出现异常:
var artists = xml.Descendants("Artists")
.Elements("Artist")
.Select(a => new Artist {
Name = (string)a.Element("Artist")
}).ToArray();