Variablen im XDocument Pfad

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von x90cr.

    Variablen im XDocument Pfad

    Ich müsste in den Pfadangaben des XDocument jeweils bei "Panel1" eine Variable einsetzen die beim Anclicken von "sender" bereit gestellt wird und als Ausgabe "Panel1" bis "Panel∞" liefert.
    Wie mach ich das jetzt am besten?


    (Code ist unvollständig der Übersichtlichkeit wegen!)

    VB.NET-Quellcode

    1. Public XMLconfig As XDocument
    2. Sub Panel_Click(sender As Object, e As System.Windows.Forms.MouseEventArgs)
    3. If bearbeiten = True Then
    4. If e.Button = Windows.Forms.MouseButtons.Left Then
    5. bildcache = XMLconfig.<start>.<Panel1>.<Bild>.Value
    6. winkelcache = XMLconfig.<start>.<Panel1>.<Winkel>.Value
    7. Bild_auswahl.ShowDialog()
    8. XMLconfig.<start>.<Panel1>.<Bild>.Value = bildcache
    9. XMLconfig.<start>.<Panel1>.<Winkel>.Value = winkelcache
    10. XMLconfig.<start>.<Panel1>.<Relais1>.Value = "False"
    11. XMLconfig.<start>.<Panel1>.<Relais2>.Value = "False"
    12. ElseIf e.Button = Windows.Forms.MouseButtons.Right Then
    13. Einstellungen.ShowDialog()
    14. End If
    15. End If
    16. End Sub
    Nach dem 11. mal lesen hab ich den Satz dann doch verstanden, unglaublich.
    Du willst also eine Variable des Typs Panel mit einem bestimmten Wert (iein Panel). UNd was ist das Problem ?
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @x90cr:: Kannst Du bitte mal ein (vollständiges) Stück XML-Datei anhängen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Auch hier mal nur die gekürzte Variante.

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    2. <start>
    3. <Panel>
    4. <Panelsize>50</Panelsize>
    5. <Spalten>25</Spalten>
    6. <Reihen>20</Reihen>
    7. </Panel>
    8. <MainForm>
    9. <Width>1266</Width>
    10. <Height>1038</Height>
    11. <Location_X>213</Location_X>
    12. <Location_Y>4</Location_Y>
    13. </MainForm>
    14. <Panel1>
    15. <Bild>00</Bild>
    16. <Winkel>0</Winkel>
    17. <Relais1>False</Relais1>
    18. <Relais2>False</Relais2>
    19. </Panel1>
    20. <Panel2>
    21. <Bild>00</Bild>
    22. <Winkel>0</Winkel>
    23. <Relais1>false</Relais1>
    24. <Relais2>false</Relais2>
    25. </Panel2>
    26. <Panel3>
    27. <Bild>00</Bild>
    28. <Winkel>0</Winkel>
    29. <Relais1>false</Relais1>
    30. <Relais2>false</Relais2>
    31. </Panel3>
    32. <Panel4>
    33. <Bild>00</Bild>
    34. <Winkel>0</Winkel>
    35. <Relais1>false</Relais1>
    36. <Relais2>false</Relais2>
    37. </Panel4>
    38. <Panel5>
    39. <Bild>00</Bild>
    40. <Winkel>0</Winkel>
    41. <Relais1>false</Relais1>
    42. <Relais2>false</Relais2>
    43. </Panel5>
    44. <Panel6>
    45. <Bild>00</Bild>
    46. <Winkel>0</Winkel>
    47. <Relais1>false</Relais1>
    48. <Relais2>false</Relais2>
    49. </Panel6>
    50. </start>
    Ich finde den Aufbau von der XML nicht optiomal. Ich würde es ungefähr so machen:

    XML-Quellcode

    1. <Panel ID="1">
    2. <Bild>00</Bild>
    3. <Winkel>0</Winkel>
    4. <Relais1>false</Relais1>
    5. <Relais2>false</Relais2>
    6. </Panel>

    oder

    XML-Quellcode

    1. <Panel>
    2. <ID>1</ID>
    3. <Bild>00</Bild>
    4. <Winkel>0</Winkel>
    5. <Relais1>false</Relais1>
    6. <Relais2>false</Relais2>
    7. </Panel>
    Mach es so wie xtts02 es gesagt hat. Dann kannst du einfach auf die XML zugreifen (anhand der ID, nicht des Namens)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Ich habe jetzt eine viel übersichtlichere Variante gefunden die Variablen nimmt.

    VB.NET-Quellcode

    1. [u]Vorher:[/u]
    2. XMLconfig.<start>.<Panel1>.<Bild>.Value = bildcache
    3. [u]Nachher:[/u]
    4. XMLconfig.Element("start").Element(sender.name.ToString).Element("Bild").Value = bildcache