【发布时间】:2014-08-12 17:33:30
【问题描述】:
在使用 elementAtOrDefault 方法后,我需要在哪里拉取元素时遇到问题。我很确定我正在尝试做的事情也可以通过其他方式实现,可能我只是不知道。但在 LINQ 查询下面我正在尝试
Dim extractDetails = From GradScoreRows In doc.Root.Descendants(ns + "gradeOr") _
Select New RecordScoreDetails With _
{ _
.Result = GradScoreRows .Descendants(ns + "score").Elements(ns + "results").Value, _
.ResultComment = GradScoreRows .Descendants(ns + "score").Elements(ns + "resultComment").Value, _
.ImpactedScore = GradScoreRows .Descendants(ns + "score").Elements(ns + "ImpactedScore").Value, _
.SubjectACode = GradScoreRows .Descendants(ns + "factors").Descendants(ns + "factor").ElementAtOrDefault(0).Elements(ns + "code").Value, _
.SubjectARank = GradScoreRows .Descendants(ns + "factors").Descendants(ns + "factor").ElementAtOrDefault(1).Elements(ns + "rank").Value, _
}
我要查询的 XML sn-p 是:
<gradeOr>
<score>
<results>Passed</results>
<resultsComment>some comment</resultsComment>
<impactedScore>Something impacted Score</impactedScore>
<factors>
<factor>
<code>A</code>
<rank>20</rank>
</factor>
<factor>
<code>B</code>
<rank>20</rank>
</factor>
</factors>
</score>
</gradeOr>
问题是因素部分可能不会出现在我收到的每个 XML 中。我将如何处理这种情况?
我尝试使用没有默认值的 ElementsAt(x),显然我遇到了索引是我们在某些情况下的范围的问题,当我使用默认值时,我遇到了对象引用未设置为对象实例的问题.
【问题讨论】:
标签: xml vb.net linq linq-to-xml