0
private void BindCountry()
{
    XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("countries.xml"));

    foreach (XmlNode node in doc.SelectNodes("//country"))
    {
        usrlocationddl.Items.Add(new ListItem(node.InnerText, node.Attributes["codes"].InnerText));
    }
}

上記のコードは、国のリストをxmlファイルからドロップダウンリストにロードするために使用しています。しかし、そうしている間、Null参照エラーが発生しています。

オブジェクト参照がオブジェクト インスタンスに設定されていません。

xmlファイルの内容:

<countries>
  <country code="AF" iso="4">Afghanistan</country>
  <country code="AL" iso="8">Albania</country>
</countries>

エラーを回避できるように、コードのどこを変更する必要がありますか。

4

1 に答える 1

1

問題は、「コード」属性のない国があることだと思います。あなたはこのようにそれを避けることができます:

private void BindCountry()
{
    XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("countries.xml"));

    foreach (XmlNode node in doc.SelectNodes("//country"))
    {
        XmlAttribute attr = node.Attributes["codes"];
        if (attr != null)
        {
            usrlocationddl.Items.Add(new ListItem(node.InnerText, attr.Value));
        }
    }
}

それでも問題が解決しない場合は、単純なコンソールアプリケーションを作成して、XMLをロードし、選択した各エントリを書き出すことをお勧めします。これにより、問題の解決が容易になります。

于 2010-04-05T07:33:53.613 に答える