1

我需要检查ConnectionInd元素中是否存在特定属性FlightSegment。如果存在,我将存储该值,如果不存在,我将继续阅读下一个属性。

以下是它是否存在:

<FlightSegment ArrivalDateTime="06-16T06:10" ConnectionInd="O" DepartureDateTime="2013-06-16T00:15" SmokingAllowed="false" eTicket="true">
     <Destination ... />
</FlightSegment>

这是如果它不存在:

<FlightSegment ArrivalDateTime="03-27T17:35" DepartureDateTime="2013-03-27T13:30" SmokingAllowed="false" eTicket="true">
     <Destination ... />
</FlightSegment>

我正在使用以下代码检查它,但是当没有时ConnectionInd,它会抛出一个错误说Object reference not set to an instance of an object.

if (FlightSegment.Item(f).Attributes["ConnectionInd"].Value != "" && FlightSegment.Item(f).Attributes["ConnectionInd"] != null)
{
    string conInd = FlightSegment.Item(f).Attributes["ConnectionInd"].Value;
}
4

2 回答 2

1

反之亦然:

第一次检查

FlightSegment.Item(f).Attributes["ConnectionInd"] != null

然后

FlightSegment.Item(f).Attributes["ConnectionInd"].Value != ""

否则,如果它确实为空,您将得到您实际得到的 NullReferenceException。


更高效:

var att = FlightSegment.Item(f).Attributes["ConnectionInd"];
if (var != null)
{
    string cind = att.Value;
}
于 2013-03-13T03:21:10.107 回答
0

应该有一个类似 hasAttribute 的方法或类似的方法,而不是FlightSegment.Item(f).Attributes["ConnectionInd"].Value因为如果“ConnectionInd”不存在,您正在尝试获取“Value”一个空对象,这将导致异常。

于 2013-03-13T03:05:21.307 回答