login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Xml in C#

Offline Ultimatum - 02/04/2009 22:06
Avatar van UltimatumPHP expert Ey, ik heb een probleem met xml in C#.NET. Dit is de xml die ik heb op dit moment.
  1. <?xml version="1.0"?>
  2. <blueprints xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. <blueprint name="Augoror" race="amarr" type="battlecruier">
  4. </blueprint>
  5. <blueprint name="Omen" race="amarr" type="battlecruiser">
  6. </blueprint>
  7. <blueprint name="Dominix" race="Gallente" type="battelship">
  8. </blueprint>
  9. </blueprints>


Nu wil ik een treeview maken met alle types als parent en daaronder de race en onder elke race weer de schepen. Maar als race of type al bestaat in treeview moet hij niet nog een keer als parent worden toegevoegd, iemand een idee hoe ik dit kan doen want ik kom er niet uit.

4 antwoorden

Gesponsorde links
Offline Abbas - 03/04/2009 03:26
Avatar van Abbas Gouden medaille

Crew .NET
Awel, je gaat loopen door je Treeview en als de Node nog niet bestaat ga je die invoegen in de Treeview. Als deze al wel bestaat haal je de index (van die Node) van het type of de race op in de Treeview en voeg je aan die Node een Child toe. Snap je? 
Offline Ultimatum - 03/04/2009 07:07 (laatste wijziging 03/04/2009 12:47)
Avatar van Ultimatum PHP expert Ik snap de theorie wel, maar ik heb het niet voor elkaar gekregen, heb je misschien een heel simpel voorbeedje? Ik heb het nu zo opgelost. is dit een goede oplossing of is er een betere?

  1. private void Form1_Load(object sender, EventArgs e)
  2. {
  3. try
  4. {
  5. System.Xml.XmlDocument document = new XmlDataDocument();
  6. document.Load("blueprints.xml");
  7. populateTreeControl(document.DocumentElement, treeView1.Nodes);
  8. treeView1.ExpandAll();
  9. }
  10. catch (XmlException x)
  11. {
  12. MessageBox.Show(x.Message);
  13. }
  14. catch (Exception ex)
  15. {
  16. MessageBox.Show(ex.Message);
  17. }
  18. }
  19.  
  20. private void populateTreeControl(XmlNode document, TreeNodeCollection nodes)
  21. {
  22. foreach (XmlNode node in document.ChildNodes)
  23. {
  24. TreeNode type = null;
  25. TreeNode race = null;
  26. if (nodes.ContainsKey(node.Attributes["type"].Value) == false)
  27. {
  28. type = nodes.Add(node.Attributes["type"].Value, node.Attributes["type"].Value);
  29. }
  30. else
  31. {
  32. type = nodes[node.Attributes["type"].Value];
  33. }
  34.  
  35. if (type.Nodes.ContainsKey(node.Attributes["race"].Value) == false)
  36. {
  37. race = type.Nodes.Add(node.Attributes["race"].Value, node.Attributes["race"].Value);
  38. }
  39. else
  40. {
  41. race = nodes[node.Attributes["race"].Value];
  42. }
  43.  
  44. race.Nodes.Add(node.Attributes["name"].Value, node.Attributes["name"].Value);
  45. }
  46. }
Offline Abbas - 04/04/2009 21:48
Avatar van Abbas Gouden medaille

Crew .NET
Je hebt het nu zo opgelost zeg je me. Ik heb de code niet getest, maar werkt ze? Want als ze werkt is het toch in orde lijkt me! 
Offline Ultimatum - 04/04/2009 22:51 (laatste wijziging 04/05/2009 19:03)
Avatar van Ultimatum PHP expert Ja het werkt wel, maar het lijkt een beetje omslachtig . Daarom vroeg ik of er een betere manier is.

Ik heb nog steeds dezelfde code, is het mogelijk om dit automatisch te doen ipv die 3 if statements? Dus dat ik alle attributen doorloop en hij dan zelf de parent en child aanmaken als ze nog niet bestaan?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.169s