2010-04-05 5 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)); 
    } 
} 

Le code ci-dessus est utilisé pour le chargement des pays Liste d'un fichier xml dans une liste déroulante. Mais ce faisant, je rencontre une erreur de référence nulle.Erreur lors du chargement du contenu d'un fichier XML dans une liste déroulante

La référence d'objet n'est pas définie sur une instance d'un objet.

Contenu du fichier xml:

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

Où dans le code que je devrais être en train de changer, pour que je puisse échapper à l'erreur.

+0

Vous pouvez essayer d'utiliser la propriété Value au lieu de la propriété InnerText pour l'attribut codes? – Kane

Répondre

1

Je suppose que le problème est que vous avez un pays sans attribut "codes". Vous pouvez éviter cela comme ceci:

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)); 
     } 
    } 
} 

Si cela ne fonctionne pas, je vous suggère d'écrire une simple application de la console pour essayer de charger le XML et écrire chaque entrée vous devez sélectionner - qui devrait faciliter pour déterminer ce qui ne va pas.

+0

Oui le problème est avec l'attribut "codes". Je vous remercie. – Chaitanya

Questions connexes