检查元素中是否存在特定的属性

本文关键字:属性 存在 元素 是否 检查 | 更新日期: 2023-09-27 18:03:32

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

如果存在,则如下所示:

<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;
}

检查元素中是否存在特定的属性

反之:

第一次检查

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;
}

应该有一个方法像hasAttribute或类似的东西,你应该使用而不是FlightSegment.Item(f). attributes ["ConnectionInd"]。值,因为如果"ConnectionInd"不存在,你试图从一个空对象中获取"Value",这将导致一个异常。