2010-04-05 28 views
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文件中的国家列表加载到下拉列表中。但是,当这样做遇到空引用错误。将XML文件中的内容加载到下拉列表中时出错

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

内容的XML文件:

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

在代码中,我应该改变,这样我可以逃避错误。

+0

你可能想尝试使用Value属性代替InnerText属性的代码属性? – Kane 2010-04-05 07:38:09

回答

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,并写出你会选择每一个条目 - 这应该更容易找出发生了什么问题。

+0

是的问题是与“代码”属性。谢谢。 – Chaitanya 2010-04-05 07:37:03

相关问题