Laden...

XML-Datei einlesen und mittels Nodes-Attributen in der TreeView darstellen.

Erstellt von X1C3 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.554 Views
X
X1C3 Themenstarter:in
1 Beiträge seit 2011
vor 12 Jahren
XML-Datei einlesen und mittels Nodes-Attributen in der TreeView darstellen.

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]);
    }
			
}
G
47 Beiträge seit 2011
vor 12 Jahren

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...)