以下の XML に似たものがあります。C# で Linq を使用して解析していますtype
。
<productList>
<product>
<type>
<colour>red</colour>
</type>
<name>First</name>
</product>
<product>
<name>Second</name>
</product>
</productList>
colour
の下の要素にアクセスしようとしていますtype
が、コードが要素product
を持たないに到達するとtype
、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。
現時点でアクセスするために使用しているコードは次のとおりです。私がこれを解決しようとした試みで、事態は少し複雑になりました。
productColour = products.Element("type").Descendants().FirstOrDefault() == null ? string.Empty : products.Element("type").Descendants().FirstOrDefault().Value,
colour
要素は常に の下にあることがわかっているtype
ので、 を使用できます.FirstOrDefault()
が、このコードを使用しても同じエラーが発生します。
誰かが私を正しい方向に向けることができますか? また、文字列へのキャストも試みましたが?? " "
、最後に、これまでのところすべて役に立ちませんでした。
編集: @ anthony-pegram のおかげで、親要素が存在しない場合でも、常に子孫を取得しようとしていることが問題のようです。したがって、子を取得する前に親要素を確認する必要があるようです-誰かが私にこれの方向を教えてもらえますか?