我需要检查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;
}
答案 0 :(得分:1)
反之亦然:
首先检查
FlightSegment.Item(f).Attributes["ConnectionInd"] != null
然后
FlightSegment.Item(f).Attributes["ConnectionInd"].Value != ""
否则,如果它确实为null,您将获得实际获得的NullReferenceException。
效率更高:
var att = FlightSegment.Item(f).Attributes["ConnectionInd"];
if (var != null)
{
string cind = att.Value;
}
答案 1 :(得分:0)
应该有像hasAttribute这样的方法,你应该使用它而不是 FlightSegment.Item(f).Attributes [“ConnectionInd”]。值因为如果“ConnectionInd”没有存在,你试图从空对象中获取“值”,这将导致异常。