Willkommen | 
	 
	| 
	 | 
 
 
 
		
  
myGully | 
	 
	| 
	
	 | 
 
 
 
		
  
Links | 
	 
	| 
	
	 | 
 
 
 
		
  
Forum | 
	 
	| 
	
	 | 
 
 
 
      | 
  | 
 
	
		  | 
	
	
 
 
		
	
	
	
		
	
	
	
		
			
			 
			24.02.13, 11:41
			
			
		 | 
		
			 
			#1
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
				
			
			
				 
				Registriert seit: Mar 2012 
				
				
				
					Beiträge: 42
				 
				 
	
		
		 Bedankt: 1
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
				 
				C# & xml
			 
			 
			
		
		
		
			
			Hi 
ich habe ein kleines problem mit xml datein. 
Ich möchte Pfade (48 * 32) sortiert in einer xml-Datei speichern.
 
allerdings werden bei mir immer nur die letzten beiden erstellt.
 
Hat dafür jmd eine lösung?
 
	Code: 
	for (int i = 1; i < 49; i++)
                {
                    for (int j = 1; j < 33; j++)
                    {
                        XmlDocument doc = new XmlDocument();
                        XmlNode myRoot, myNode;
                       
                        myRoot = doc.CreateElement("icon"+j);
                        doc.AppendChild(myRoot);
                        myNode = doc.CreateElement("gp"+i+"_image");
                        myNode.InnerText = "";
                        myRoot.AppendChild(myNode);
                        myNode = doc.CreateElement("gp"+i+"_shortcut");
                        myNode.InnerText = "";
                        myRoot.AppendChild(myNode);
                        doc.Save(@"\icons.xml");
                        
                    }
                }
 So sieht die xml-Datei dann aus:
 
	Code: 
	<icon32>
  <gp48_image>
  </gp48_image>
  <gp48_shortcut>
  </gp48_shortcut>
</icon32> 
 MfG ipulf2
		  
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			24.02.13, 13:01
			
			
		 | 
		
			 
			#2
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
			
				 
				Registriert seit: Apr 2012 
				
				
				
					Beiträge: 43
				 
				 
	
		
			
				 Bedankt: 16 
			
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			Weil du immer ein neues XmlDocument erstellst und dadurch die alten Inhalte überschreibst. 
 
 XmlDocument doc = new XmlDocument(); ausserhalb der schleife erzeugen.
		 
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			24.02.13, 13:22
			
			
		 | 
		
			 
			#3
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
				
			
			
				 
				Registriert seit: Mar 2012 
				
				
				
					Beiträge: 42
				 
				 
	
		
		 Bedankt: 1
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			Hier der neue code 
	Code: 
	XmlDocument doc = new XmlDocument();
                XmlNode myRoot, myNode;
                for (int i = 1; i < 49; i++)
                {
                    for (int j = 1; j < 33; j++)
                    {
                        
                       
                        myRoot = doc.CreateElement("icon"+j);
                        doc.AppendChild(myRoot);
                        myNode = doc.CreateElement("gp"+i+"_image");
                        myNode.InnerText = "";
                        myRoot.AppendChild(myNode);
                        myNode = doc.CreateElement("gp" + i + "_shortcut");
                        myNode.InnerText = "";
                        myRoot.AppendChild(myNode);
                        
                        doc.Save(@"C:\icons.xml");
                        
                        
                        
                        
                    }
                }
 und die neue xml:
 
	Code: 
	<icon1>
  <gp1_image>
  </gp1_image>
  <gp1_shortcut>
  </gp1_shortcut>
</icon1> 
 Funktioniert leider immer noch nicht   
edit: Das doc.save außerhalb der schleife zu packen habe ich ebenfalls versucht (die xml wird dann nicht mehr erstellt).
		  
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			24.02.13, 14:53
			
			
		 | 
		
			 
			#4
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
			
				 
				Registriert seit: Apr 2012 
				
				
				
					Beiträge: 43
				 
				 
	
		
			
				 Bedankt: 16 
			
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			
	Code: 
	  XmlDocument doc = new XmlDocument();
  for (int i = 1; i < 49; i++)          {
    for (int j = 1; j < 33; j++)              {
      XmlNode myRoot = doc.CreateElement("icon"+j);
      doc.AppendChild(myRoot);
      XmlNode myNode1 = doc.CreateElement("gp"+i+"_image");
      myNode1.InnerText = "";
      myRoot.AppendChild(myNode1);
      XmlNode myNode2 = doc.CreateElement("gp" + i + "_shortcut");
      myNode2.InnerText = "";
      myRoot.AppendChild(myNode2);   
    }
  }
  doc.Save(@"C:\icons.xml");
 Probier das mal.  
vorher hast du immer nur 2 Objekte für die XML Knoten gehabt (myRoot und myNode), diese sind zwar immer mit doc.CreateElement überschrieben worden, jedoch weiß ich nicht was die Methode "CreateElement" genau macht (kann sein das er nicht ein neues Objekt erzeugt), dadurch wurden womöglich die alten objekte überschrieben und keine neuen XML-Knoten hinzugefügt.
		  
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			24.02.13, 15:46
			
			
		 | 
		
			 
			#5
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
				
			
			
				 
				Registriert seit: Mar 2012 
				
				
				
					Beiträge: 42
				 
				 
	
		
		 Bedankt: 1
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			konnte nun alles lösen vielen dank für die Hilfe   
Wenn erneut Probleme auftreten werde ich diese in diesem theard posten :P
		  
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			24.02.13, 17:43
			
			
		 | 
		
			 
			#6
			
		 | 
	
 
	| 
			
			 Banned 
			
			
			
			
				 
				Registriert seit: Mar 2012 
				
				
				
					Beiträge: 337
				 
				 
	
		
			
				 Bedankt: 93 
			
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			Oh Gott... verwende doch die XML-Attributes und den XMLSerializer und Du brauchst keine einzige Zeile programmieren!
		 
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			25.02.13, 17:16
			
			
		 | 
		
			 
			#7
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
				
			
			
				 
				Registriert seit: Mar 2012 
				
				
				
					Beiträge: 42
				 
				 
	
		
		 Bedankt: 1
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			Hast du ein Beispiel dafür? 
 
Kann mir nicht vorstellen wie sich das von selbst dort hinein laden soll^^
		 
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			25.02.13, 19:07
			
			
		 | 
		
			 
			#8
			
		 | 
	
 
	| 
			
			 Banned 
			
			
			
			
				 
				Registriert seit: Aug 2012 
				
				
				
					Beiträge: 223
				 
				 
	
		
			
				 Bedankt: 68 
			
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			@ipulf2, 
 
 Du solltest Dich mal in Objekt-orientiere Programmierung einlesen. 
C# ist z.B. eine Objekt-orientiere Programmiersprache, und der Sinn solcher Sprache ist es, eben objekt-orientiert zu programmieren. 
 
Das was Du machst ist prozedurale Programmierung. Die Vorteile der OOP können so also nicht zur Geltung kommen. Würdst Du nach OOP-Kritieren programmieren, dann würdest Du Dein Icon als Objekt beschreiben mit den entsprechenden Membern (image, shortcut). Dann fügst Du noch Attribute (Annotations!) hinzu, die beschreiben, wie das Objekt in XML serialisiert werden soll. 
 
Damit brauchst Du KEINE EINZIGE Zeile programmieren, weil Du eben die OOP-Vorteile verwendest. 
 
(Btw... Du solltest Dich schon selbst fragen, wieso Du eine OO-Programmiersprache verwendst, aber prozedural programmierst...!!!)
		 
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
	
	
		
	
	
	
		
			
			 
			25.02.13, 22:39
			
			
		 | 
		
			 
			#9
			
		 | 
	
 
	| 
			
			 Anfänger 
			
			
			
			
				 
				Registriert seit: Apr 2012 
				
				
				
					Beiträge: 43
				 
				 
	
		
			
				 Bedankt: 16 
			
		
	 
				
				 
				
				     
			 
	 | 
	
	
	
		
		
			
			
			 
			
		
		
		
			
			Schau mal hier vorbei: [  Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
 
Über deine Klasse und Members kannst du Attributes einfügen, die teilen dem XMLSerializer mit wie er die Klasse (genauer gesagt Objekte davon) (de)serialisieren soll.
 
Du musst nur mehr den XMLSerializer aufrufen:
 
	Code: 
	 
  XmlSerializer serializer = new XmlSerializer(typeof(MyCoolClass));
  FileStream fs = new FileStream("MyXML.xml", FileMode.Create);
  serializer.Serialize(fs, myCoolClassObject);
  fs.Close();
 Falls dir egal ist, in welchen Format deine Daten gespeichert werden könntest du dir natürlich auch einmal JSON ([  Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]) zu Gemüte führen, ist um einiges kompakter als XML. Empfohlener Serializer für das .NET Framework: [  Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
		  
		
		
		
		
		
		
		
	 | 
 
	
		 
		
		
		
		
		 
	 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
 
 
 
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Forumregeln
	 | 
 
	
		
		Du kannst keine neue Themen eröffnen 
		Du kannst keine Antworten verfassen 
		Du kannst keine Anhänge posten 
		Du kannst nicht deine Beiträge editieren 
		 
		
		
		
		
		HTML-Code ist Aus. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr. 
		 
	 
 
 (). 
	
	
		
	
	
 
 |