2012-12-13 3 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

다음! "나는 존재한다"? 그것은 이상해. –

+0

예, 약간 잘못되었습니다. 어쨌든, 상자마다 표시가 존재하는 경우 표시하고 나던 경우, 차이 ... –

답변

0

"메시지 상자가 XML 파일에 존재하는지 여부를 보여줍니다." 노드에 존재하지 않는 노드를 검사 할 때 잘못된 것으로 보입니다.

은 대부분의 경우 당신은 제대로 노드에 네임 스페이스를 지정해야합니다.

+0

이것은 내가 사용하고있는 XML은 없다 : http://esup.ivao.cz/xml.php I에서 내가 필요로하는 모든 공항 코드를 얻은 다음 어떤 공항에 이 포함되어 있는지 확인하고 을 포함하고 있는지 알아야합니다 (둘 다 가능할 수 있음). –

0

'if'블록에서 문자열이 null 인 지 확인하지 않습니까?

내 생각 엔 - 내가 잘못 여기에있을 수 있습니다 - 당신이 의미하는 것입니다 : NULL 동일한 경우

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

글쎄,하지만 존재하는 경우와 그렇지 않은 경우 모두 상자를 보여줍니다. –

+0

좋아, 코드를 시험해 보았습니다. 원래의 "== null"을 사용하면 매번 상자가 표시되고 "! = null"로 표시됩니다. 어떤 경우에도 표시되지 않습니다. –

+0

Gregor의 솔루션이 내 것보다 훨씬 낫다. :) – Brian

관련 문제