2012-12-13 74 views
1

我需要檢查XML文件中是否存在元素。搜索這裏後,我試圖從我發現這裏非常相似的問題一個一個代碼,使代碼看起來像這樣(它使用的foreach,因此會檢查每個組機場機場循環):檢查XML文件中是否存在元素

string icao = airport.Attributes.GetNamedItem("icao").Value; 
      if(airports.SelectSingleNode("/vEsup/airports/airport/" + icao + "/departures")==null) 
      { 
       MessageBox.Show("I exist!"); 
      } 

請注意消息框僅用於測試,我發現它是檢查代碼是否正常工作的最簡單方法。然而,我發現無論我輸入什麼路徑,它總是顯示消息框,無論它是否存在於XML文件中。 「

+1

如果等於NULL,則「我的存在!」?它很奇怪。 –

+0

是的,這有點不對。無論如何,它顯示框每次,它顯示它是否存在,如果它不,沒有區別... –

回答

0

」顯示消息框是否存在於XML文件中。「似乎是不正確的,因爲您檢查節點不存在於XML if (a.SelectSingleNode(...)==null)中。

很可能您需要爲您的節點正確指定名稱空間。 (需要XML示例以提供更好的建議)

+0

這是我使用的XML:http://esup.ivao.cz/xml.php 我從得到我需要的所有機場的代碼,然後我需要找出其中哪些包含,哪些包含(它可以是它們兩個)。 –

0

在你的'if'塊中,你沒有檢查IF如果字符串爲空?

我的猜測 - 我可能是錯在這裏 - 是你的意思是:

string icao = airport.Attributes.GetNamedItem("icao").Value; 
     if(airports.SelectSingleNode("/vEsup/airports/airport/" + icao + "/departures")!=null) 
     { 
      return true; 
     } 
MessageBox.Show("I exist!"); 
+0

好吧,但是它顯示了盒子,當它存在,如果它doesnt,那它 –

+0

好吧,我已經試過你的代碼。隨着原始的「== null」它每次顯示框,現在與「!= null」,它不顯示在任何情況下。 –

+0

我喜歡格里高爾的解決方案比我的更好:) – Brian