私は最近Linqを使い始めましたが、現在、Linqを使用して、高度にネストされたXMLファイル(制御できません)を解析しようとしています。ただし、以下のステートメントを実行しようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。
問題は「City」ラインにあります。cityプロパティのデータは、xml構造のprospect / contactinfo / City/Answerから取得されます。
ただし、このフィールドは必須ではないため、XMLに都市/回答ノードがない場合があります。そのため、「city」ノードが存在しないためにエラーが発生し、そのノードで「.Element()」を呼び出そうとしています。ノードレベルが1つだけ下がっている場合(つまり、必要なデータが都市にあり、都市が唯一のノードが欠落している場合)、この問題の解決策をたくさん見つけました。
しかし、それが2レベル下にある場合(つまり、存在しないノードの子ノードを取得しようとしている場合)、解決策を見つけることができませんでした。
質問が十分に明確に表現されていることを願っています。
よろしく、モーテン
var prospects = (from prospect in xdoc.Descendants("PROSPECT")
select new Prospect {
ProspectID = (string) prospect.Element("PROSPECTINFO").Element("PROSPECT_ID"),
Name = (string) prospect.Element("PERSONALINFO").Element("FIRSTNAME")+ " " + prospect.Element("PERSONALINFO").Element("SURNAME"),
address = (string) prospect.Element("CONTACTINFO").Element("ADDRESSLINE1").Element("ANSWER"),
zipCode = (string)prospect.Element("CONTACTINFO").Element("POSTALCODE").Element("ANSWER").Value,
City = (string) prospect.Element("CONTACTINFO").Element("CITY").Element("ANSWER"),
}).ToList();