将XML文件中的内容加载到下拉列表时出错

时间:2010-04-05 07:31:50

标签: c# xml nullreferenceexception

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 Reference错误。

  

对象引用未设置为   对象的实例。

xml文件的内容:

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

我应该在代码中的哪个位置进行更改,以便我可以避免错误。

1 个答案:

答案 0 :(得分: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并写出您选择的每个条目 - 这样可以更容易找出出错的地方。