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

时间:2013-03-13 03:01:47

标签: c# xml

我需要检查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;
}

2 个答案:

答案 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”没有存在,你试图从空对象中获取“值”,这将导致异常。