如何检查XML中存在的元素

时间:2016-03-14 11:34:02

标签: c# xml linq-to-xml

    <FrameLayout android:id="@+id/viewLayout" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_weight="1" android:padding="12dp">
  <ImageView android:id="@+id/view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:contentDescription="@string/imageDescription" android:src="@drawable/view" /> 
  <TextView android:id="@+id/viewBad" android:layout_width="20dip" android:layout_height="20dip" android:clickable="false" android:layout_marginStart="5dp" android:layout_gravity="top|center_horizontal" android:background="@drawable/badge_background" android:gravity="top|center_horizontal" android:text="5" android:textColor="@color/white" android:visibility="gone" /> 
  </FrameLayout>

通过以下代码,我正在阅读元素<library> <book> <id>1</id> <name>abc</name> <read> <data>yes</data> <num>20</num> </read> </book> <book> <id>20</id> <name>xyz</name> <read> <data>yes</data> </read> </book> <book> <id>30</id> <name>ddd</name> </book> </library> 值= 20的<book>节点

<id>

此处if条件无法正常工作。它传递条件并进入内部并给出null异常。这是检查相同的正确方法吗?

我正在使用.NET FRAMEWORK 4.0

1 个答案:

答案 0 :(得分:2)

您需要为每个null来电检查Elements

if(book != null && book.Element("read") != null && book.Element("read").Element("num") != null) //check the node exist

在C#6中,你可以使用?.运算符让它感觉更好:

if(book?.Element("read")?.Element("num") != null) //check the node exist