Powershell Datagridview und XML Datenhaltung

Mitglied: H41mSh1C0R

H41mSh1C0R (Level 3) - Jetzt verbinden

14.04.2016 um 09:49 Uhr, 1488 Aufrufe, 10 Kommentare, 1 Danke

Hi@ps Profi's,

ich habe 1 Datagridview(DGV) das mit Einträgen gefüllt wird.
Das Hinzufügen, Löschen und Editieren funktioniert.

Die erste Spalte ist der Zeilencounter.

Jetzt klemmt es grad an der Art und Weise wie ich mit der Datenhaltung umgehe.
Ich hatte mich für XML entschieden.

Wenn ich nun ein Element lösche was mittendrin ist, DGV leeren, Element aus dem XML entfernen und XML neu einlesen und ab ins DGV.


Da ich das Attribut Number benutze um die Stelle des Eintrages zu wissen ändert sich das natürlich über den Anzahl der Einträge wenn man was löscht.
Der erste Gedanke war ok, dann durchlauf ich halt das XML und fülle das Attribut neu.

Gibt es da einen eleganteren Weg wie ich mit dem Inhalt des XML umgehen kann?

Beim Thema Databinding bin ich noch nicht soweit, hab damit begonnen mich dazu zu belesen, wie es die Zeitfenster zulassen.

Gruß vom H41mSh1C0r
Mitglied: 114757
114757 (Level 4)
LÖSUNG 14.04.2016, aktualisiert um 10:36 Uhr
Moin.
Um es simpel zu halten würde ich zu gegebenen Zeitpunkt einfach das Datagrid durchlaufen und die XML einfach komplett neu schreiben.

Wenn man es professionell machen möchte arbeitet man hier mit XML-Serialization/Deserialization. Dazu solltest du dich aber erst mal einlesen.

Ansonsten kannst du wenn die XML wirklich live aktuell gehalten werden muss, einfach mit XPath deine Nummer im XML suchen und dann entweder entfernen oder ändern, oder bei nicht Existenz hinzufügen.
Einfaches XPath Beispiel um einen Knoten zu suchen und zu löschen:
Wenn es aber wirklich nur darum geht die Einstellungen am Ende des Programms zu speichern würde ich zur ersteren Methode greifen und das XML neu schreiben. Wenn man eine Datatable als Source für das DGV nutzt ist das ja auch schnell erledigt.

Ich meine das Thema hatten wir hier im Forum schon, werf mal die Suche an, da findet sich 100%prozentig auch was für Powershell.

Gruß jodel
Bitte warten ..
Mitglied: H41mSh1C0R
14.04.2016 um 10:43 Uhr
Hi Jodel,

das mit dem RemoveChild hat schon funktioniert, das mach ich genau so.

Dann werd ich das wie schon gedacht erstmal neuschreiben und das Attribute neu schreiben.

Alternativ wenn ich das Attribut weglasse hab ich ja jede Menge Entry's. Dann müsste ich nur das richtige Entry finden wenn ich was lösche oder editiere. Dann kann ich mir das Umbenennen sparen und schmeiss die Spalte raus in der die laufende Nr steht.

*grübel*

Gruß
Bitte warten ..
Mitglied: 114757
114757 (Level 4)
14.04.2016, aktualisiert um 11:13 Uhr
Naja wenn du nur einen Index brauchst, den hast du schon für jede Zeile. Per XPath lassen sich die Knoten auch per Index ansprechen, eine extra Zeile dafür ist also nicht nötig. Ein eindeutiger Bezeichner ID ist aber immer vorzuziehen, je nachdem was das DGV für Daten bereithält.
Du hast die Wahl, such dir das aus was am besten zu dir passt und womit du vor allem umgehen kannst ;-) face-wink.

Ich würde dir zu einer In-Memory Datenhaltung mit einer DataTable als Source raten welche du zu gegebenem Zeitpunkt im ganzen mit einer Funktion zurück in dein XML schreibst. Entsprechend auch eine Funktion welche die Daten aus dem XML beim Start in eine Datatable einließt.
Bitte warten ..
Mitglied: H41mSh1C0R
14.04.2016 um 12:46 Uhr
ok danke dir, vorgehensweise:

- XML Einlesen
- DataTable definieren/erstellen
- XML content in die DataTable schreiben
- DataTable an das DGV binden

*rabota rabota rabota rabota *

- DataTable beim Speichern in XML zurückschreiben
Bitte warten ..
Mitglied: 114757
114757 (Level 4)
14.04.2016 um 13:14 Uhr
jepp
Bitte warten ..
Mitglied: colinardo
19.04.2016, aktualisiert um 18:04 Uhr
Hallo zusammen,
eine Datatable kann per Default seine Daten in eine XML-Datei schreiben und Daten auch wieder laden:

Zum Wegschreiben:
Zum Einlesen:

Automatisch erstellte XML sieht so aus:
Oder man nutzt wie @114757 schon erwähnt hat XML (De-)Serialization

Zum wegschreiben:
Zum Einlesen des Datatable-Objekts

Die resultierende XML für das Beispiel:
Grüße Uwe

Tags: Powershell,XML,Datagridview,Serialisierung
Bitte warten ..
Mitglied: 114757
114757 (Level 4)
19.04.2016, aktualisiert um 18:26 Uhr
TOP, ich sehe ich war mal wieder zu faul zum Tippen ;-P
Bitte warten ..
Mitglied: H41mSh1C0R
19.04.2016 um 20:24 Uhr
Hallo Uwe,

danke dir für die ausführlichen Beispiele. Ich hatte es bereits genauso mit der DataTable gemacht und es funktioniert. =)

Gibt es irgendwelche Vorteile es über Serialisierung umzusetzen?

Gruß vom H41mSh1C0r
Bitte warten ..
Mitglied: colinardo
19.04.2016, aktualisiert um 21:20 Uhr
Zitat von @H41mSh1C0R:
Gibt es irgendwelche Vorteile es über Serialisierung umzusetzen?
Ja, du brauchst die Struktur der Datatable hier nicht vorher manuell einrichten (Spalten, Namen,etc.) die kommt dort komplett via Schema aus der XML.

Grüße Uwe
Bitte warten ..
Mitglied: H41mSh1C0R
23.04.2016, aktualisiert um 09:58 Uhr
Hallo Uwe,

danke für die Info.

Gruß vom H41mSh1C0r
(der noch fix und alle von der psconf 2016 ist, schlaf nachholen und den Kopf kühlen muss) =)
Bitte warten ..
Heiß diskutierte Inhalte
Exchange Server
Sicherheits-Update KB5001779 für Exchange 2013-2019
kgbornVor 1 TagInformationExchange Server9 Kommentare

Microsoft hat zum 13. April 2021 das Sicherheitsupdate KB5001779 für Exchange 2013-2019 veröffentlicht, um vier RCE-Schwachstellen zu schließen. Das Update sollte zeitnah installiert werden. ...

Datenschutz
Regierung testet Einsatz von Microsoft Azure-Cloud für die Bundescloud
VisuciusVor 1 TagInformationDatenschutz34 Kommentare

LÄUFT! Deutschland will Microsoft für die Bundescloud testen Ich hätts ja beinahe unter dem Topic "Humor" veröffentlicht. Aber der 1. April ist ja durch ...

Festplatten, SSD, Raid
Festplatte aus defekten Notebook ausgebaut - wird nicht erkannt - Wie gelange ich an meine Daten?
1nCoreVor 19 StundenFrageFestplatten, SSD, Raid11 Kommentare

Hallo liebe Community, nach 7 Jahren hat mein XMG Notebook seinen Geist aufgegeben In dem Notebook waren zwei Festplatten verbaut (eine für System und ...

Server
Server Anbieter mit 2 NICs gesucht
gelöst SilvergreenVor 1 TagFrageServer16 Kommentare

Hallo Community, ich bin auf der Suche nach einem Serveranbieter, der VPS/Cloud Server mit 2 Netzwerkkarten anbietet. Eine Internetsuche brache mich da leider nicht ...

Internet
Woher holt sich Android die Kontaktdaten von unbekannten Rufnummern?
gelöst anteNopeVor 23 StundenFrageInternet8 Kommentare

Hallo zusammen, seit einiger Zeit merke ich, dass mir mein Android Gerät Namen und Informationen zu mir unbekannten Teilnehmern präsentiert. Soll heißen eine nicht ...

Windows Netzwerk
MS Lizenzierung - externe Scandienstleistung
monstermaniaVor 22 StundenFrageWindows Netzwerk9 Kommentare

Hallo Allerseits, ich habe da mal eine Frage an die MS Lizenzspeziallisten. Eine externe Firma soll Scandienstleistungen für uns erledigen. Dazu ist angedacht, dass ...

Exchange Server
Exchange Update CU19 auf CU20 Fehler - Eine weitere Version dieses Produkts ist bereits installiert
gelöst StefanKittelVor 20 StundenFrageExchange Server6 Kommentare

Hallo, ich habe hier einen Exchange 2016 mit CU19 (15.1.2176.2). Darauf wollte ich nun CU20 installiert. Download Es erscheint Eine weitere Version dieses Produkts ...

Exchange Server
April 2021 Microsoft Exchange Server Security Updates
FrankVor 1 TagInformationExchange Server2 Kommentare

Microsoft has released security updates for vulnerabilities found in: Exchange Server 2013 Exchange Server 2016 Exchange Server 2019 These updates are available for the ...