トップ回答者
Linqで、XMLに存在しないデータの取り扱い

質問
-
お世話になります。
Linqについては初歩的なことだと思いますが、なにとぞご伝授ください。
Linqで、XMLファイルを扱う場合、
<entry>
<title>タイトル1</title>
<url>データ1</url>
</entry>
<entry>
<title>タイトル2</title>
</entry>
のデータが存在し、
、
var entries = from entry in doc.Descendants("entry")
select new
{
title = entry.Element("title").Value,
url = entry.Element("title").Value
}foreach (var entry in entries)
{
Debug.WriteLine(entry.title);
Debug.WriteLine(entry.url);
}を実行すると、System.NullReferenceExceptionが発生します。
この理由は、2つ目のデータのURLが存在しないからだと思いますが、
こういった場合、対処としてはどうすればよいのでしょうか?
私としては、タイトル1
データ1
タイトル2
null
と出力されると考えておりました。
どうぞよろしくお願いいたします。
回答
-
http://msdn2.microsoft.com/ja-jp/library/system.xml.linq.xelement.value.aspx
「要素が存在するかどうかわからない場合は、明示的な型変換演算子を使用して」という記述がありますね。
title = (string)entry.Element("title"),
url = (string)entry.Element("url")としてみたらどうでしょう。
すべての返信
-
http://msdn2.microsoft.com/ja-jp/library/system.xml.linq.xelement.value.aspx
「要素が存在するかどうかわからない場合は、明示的な型変換演算子を使用して」という記述がありますね。
title = (string)entry.Element("title"),
url = (string)entry.Element("url")としてみたらどうでしょう。