我最近开始使用 Linq,目前正在尝试使用它来解析一个高度嵌套的 XML 文件(我无法控制它)。但是,在尝试运行以下语句时,出现“对象引用未设置为对象的实例”错误。
问题出在“城市”行。city 属性的数据来自 xml 结构前景/contactinfo/City/Answer。
但由于该字段不是强制性的,有时 XML 将没有城市/答案节点。所以我得到了错误,因为“城市”节点不存在,我试图在它上面调用“.Element()”。我已经为这个问题找到了很多解决方案,当它只有一个节点级别时(即,如果我需要的数据在城市中,而城市是唯一缺失的节点)。
但是当它向下两层时(即试图获取不存在节点的子节点),我无法找到任何解决方案。
希望问题表达得足够清楚。
最好的问候,莫滕
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();