1

XML ファイルに要素が存在するかどうかを確認する必要があります。ここで検索した後、ここで見つけた非常によく似た質問の 1 つからコードを試してみたので、コードは次のようになります (foreach を使用してループされているため、グループ空港内のすべての空港がチェックされます)。

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

メッセージ ボックスはテスト用であることに注意してください。コードが正しく機能しているかどうかを確認する最も簡単な方法だと思います。ただし、どのパスを入力しても、XML ファイルに存在するかどうかに関係なく、常にメッセージ ボックスが表示されることがわかりました。

4

3 に答える 3

2

Linqを使用して、特定のxmlノードと属性をクエリすることもできます。同様のサンプルへのリンクは次のとおりです:http: //www.codearsenal.net/2012/07/c-sharp-load-xml-using-xlinq.html

于 2012-12-13T22:42:23.620 に答える
0

「メッセージボックスがXMLファイルに存在するかどうかを表示します。」ノードがXMLに存在しないことを確認しているため、正しくないようですif (a.SelectSingleNode(...)==null)

ほとんどの場合、ノードに名前空間を正しく指定する必要があります。(より良い提案をするためにサンプルXMLが必要です)

于 2012-12-13T22:41:10.480 に答える
0

'if'ブロックで、文字列がnullかどうかを確認していませんか?

私の推測-そして私はここで間違っているかもしれません-はあなたが意味したということです:

    string icao = airport.Attributes.GetNamedItem("icao").Value;
        if(airports.SelectSingleNode("/vEsup/airports/airport/" + icao + "/departures")!=null)
        {
            return true;
        }
MessageBox.Show("I exist!");
于 2012-12-13T22:45:42.420 に答える