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>

この単純な XML ファイルを LINQ で解析するにはどうすればよいですか? 私は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ことです (値が見つからないためでしょうか?)。

<Artist>XML をトラバースして、 and<Genre>タグ内の関連部分を取得したいと思います。

4

2 に答える 2

7

aあなたのSelect()コールバックには<Artist>要素があります。 a.Element("Artist")何もありません。

于 2012-11-30T16:47:42.197 に答える
2

プロパティにアクセスする代わりに、要素を文字列にキャストしValueます。この場合、要素が null の場合、例外は発生しません。

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