Hallo !
Kurze Beschreibung ...
Eine XML-Datei wird eingelesen und in der TreeView dargestellt.
Die Nodes der XML-Datei haben Attribute "id", die sollen in der TreeView die TreeNodes darstellen. Z.b.
-catalog
-bk101
->author
->title
->...
-bk102
->...
Mein Problem ist, dass ich folgende Fehlermeldung in der Zeile erhalte:
XmlAttribute atr = element.ChildNodes[i].Attributes["id"];
Fehlermeldung:
System.NullReferenceException: Object reference not set to an instance of an object.
Wo liegt der Fehler ? Danke!
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
</book>
</catalog>
Hier die Methode:
void readChild(XmlNode element, TreeNode treeNode) {
int i = 0;
if (element.HasChildNodes) {
for (i = 0; i < element.ChildNodes.Count; i++) {
XmlAttribute atr = element.ChildNodes[i].Attributes["id"];
if (atr != null) {
treeNode.Nodes.Add(new TreeNode(atr.Value));
} else
treeNode.Nodes.Add(new TreeNode(element.ChildNodes[i].Name));
readChild(element.ChildNodes[i],treeNode.Nodes[i]);
}
}
Hi X1C3,
da steckt garkein Vodoo hinter. Setz doch einfach mal einen Haltepunkt in die Zeile, die den Fehler auswirft und lass den Debugger starten.
Die ersten beiden Ebenen laufen ohne weiteres durch, doch dann kommst du in der dritten Ebene auf author:
author hat ein Child, nämlich "Gambardella, Matthew". Das Progemm läuft also in den Block der If-Bedingung und versucht dort auf das erste Element der Attributes-Liste zuzugreifen. author hat aber gar keine Attribute. Deshalb liefert Attributes null zurück und der Zugriff auf Attributes[0] schlägt fehl, was dir der Debugger mit> Fehlermeldung:
System.NullReferenceException: Object reference not set to an instance of an object.
um die Ohren haut.
Bevor du also um Hilfe schreist, was denn falsch gelaufen sein könnte, bemüh doch erst einmal die Bordmittel von VisualStudio.
Gruß Gwinn
(Edith ist heute einfach zu müde...)
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code