Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

C-Sharp: XML Anfänger benötigt Hilfestellung

Frage Entwicklung XML

Mitglied: 115122

115122 (Level 1)

19.09.2014, aktualisiert 24.09.2014, 1179 Aufrufe, 5 Kommentare

Hallo,

ich würde gerne Einträge, welche ich in einer Listbox mache abspeichern, damit ich sie beim nächsten Öffnen meiner kleinen Anwendung noch sehe.

Information vorweg:
Ich habe zwei Listboxen, eine heißt "todo", die andere Box heißt "erledigt".

Habe mich also über XML und dessen Verwendung informiert und bisher folgenden Code zusammengeschustert:

01.
//XML functions 
02.
        //Export 
03.
        private void ExportXML() 
04.
05.
            try 
06.
07.
                List<string> todoList = new List<string>(); 
08.
                List<string> erledigtList = new List<string>(); 
09.
                XmlSerializer serializer = new XmlSerializer(typeof(List<string>)); 
10.
                TextWriter tw = new StreamWriter(Application.StartupPath + "\\savefile.xml"); 
11.
 
12.
                for (int i = 0; i <= lbTodo.Items.Count - 1; i++) 
13.
14.
                    todoList.Add(lbTodo.Items[i].ToString()); 
15.
16.
 
17.
                for (int n = 0; n <= lbErledigt.Items.Count - 1; n++) 
18.
19.
                    erledigtList.Add(lbErledigt.Items[n].ToString()); 
20.
21.
                serializer.Serialize(tw, todoList); 
22.
                serializer.Serialize(tw, erledigtList); 
23.
                tw.Close(); 
24.
25.
            catch (Exception ex) 
26.
27.
                MessageBox.Show(ex.Message.ToString()); 
28.
29.
30.
 
31.
        //Import 
32.
        private void ImportXML() 
33.
34.
            try 
35.
36.
                XmlDocument xmldoc = new XmlDocument(); 
37.
                xmldoc.Load(Application.StartupPath + "\\savefile.xml"); 
38.
                XmlElement root = xmldoc.DocumentElement; 
39.
                XmlNodeList lst = root.GetElementsByTagName("string"); 
40.
 
41.
                foreach (XmlNode n in lst) 
42.
43.
                    lbTodo.Items.Add(n.InnerText); 
44.
                    lbErledigt.Items.Add(n.InnerText); 
45.
46.
47.
            catch (Exception ex) 
48.
49.
                MessageBox.Show(ex.Message.ToString()); 
50.
51.
        }
Dort, wo jeweils beim Eintragen etwas gespeichert werden soll, habe ich die Funktion aufgerufen, siehe Beispiel:

01.
if (chkTodo.Checked == true) 
02.
03.
     lbTodo.Items.Add(tbEintrag.Text); 
04.
     ExportXML(); 
05.
}
Beim Start des Programms wird "ImportXML()" aufgerufen, damit die Daten geladen werden.

So weit so gut, wenn ich Datensätze in die ToDo-Liste eingebe, erscheinen diese in der Listbox und werden gleichzeitig in ein XML File geschrieben, das funktioniert einwandfrei.

Schiebe ich nun einen Datensatz in die "erledigt"-Liste oder trage NUR in diese Liste einen Eintrag ein, so werden die Listen nicht mehr separat behandelt und die Datensätze werden in beiden Listen dargestellt.

D.h. mein Problem ist, dass das XML File nicht zwischen den beiden Listen unterscheidet. Ich habe das ganze mit zwei List-Items und zwei for-Schleifen getestet, das hat aber nicht funktioniert. (siehe in oberem Codebeispiel -> ExportXML-Funktion)

Falls jemand für mein Problem eine Lösung oder einen Tipp parat hat, wäre ich dafür sehr dankbar. ;)

Grüße
Mitglied: colinardo
LÖSUNG 19.09.2014, aktualisiert 24.09.2014
Hallo lordzwieback,
dein Problem ist das du beim importieren nicht zwischen den zwei Listboxen unterscheidest (Zeile 41-45). Ich würde das wenn du es mit dem Serializer machst über eine Klasse machen die für den Export den Listen der jeweiligen Listboxen entsprechende Attribute in der XML zuweist, die du dann beim importieren entsprechend differenziert in die jeweilige Listbox einlesen kannst.
Das ist hier sehr schön beschrieben:
http://tech.pro/tutorial/798/csharp-tutorial-xml-serialization

Grüße Uwe
Bitte warten ..
Mitglied: 115122
19.09.2014 um 12:57 Uhr
Zitat von colinardo:

Das ist hier sehr schön beschrieben:
http://tech.pro/tutorial/798/csharp-tutorial-xml-serialization

Grüße Uwe

Werde das mal testen und mich danach hier wieder melden. Danke für den Hinweis.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 19.09.2014, aktualisiert 24.09.2014
Falls du es nicht selber schaffen solltest es umzusetzen, habe ich dir mal ein VS2010-Demo-Projekt zusammengestellt: xml_serialization_249646.zip

Das Projekt nutzt für den Import im Gegensatz zum klassischen Auslesen via XMLDocument das direkte Umwandeln des XML-Codes in Objekte mit der Deserialize-Methode des XMLSerializer Objektes. Da du diesen ja schon für den Export benutzt hast bietet sich dies an.

Grüße Uwe
Bitte warten ..
Mitglied: 115122
22.09.2014 um 08:01 Uhr
Zitat von colinardo:

Falls du es nicht selber schaffen solltest es umzusetzen, habe ich dir mal ein VS2010-Demo-Projekt zusammengestellt:
xml_serialization_249646.zip

Das Projekt nutzt für den Import im Gegensatz zum klassischen Auslesen via XMLDocument das direkte Umwandeln des XML-Codes in
Objekte mit der Deserialize-Methode des XMLSerializer Objektes. Da du diesen ja schon für den Export benutzt hast bietet
sich dies an.

Grüße Uwe

Wow danke für die Mühe, hatte übers Wochenende keine Zeit, werde mir das aber auf jeden Fall anschauen.

Grüße
Bitte warten ..
Mitglied: 115122
24.09.2014 um 10:29 Uhr
So, habe mit dem Link und der Demo alles hinbekommen, vielen Dank für die Hilfe.

Grüße
Bitte warten ..
Ähnliche Inhalte
C und C++
C-Sharp: Unbekanntes XML verarbeiten
gelöst Frage von BirdyBC und C++3 Kommentare

Hallo zusammen, ich arbeite gerade an einem kleinen Projekt, welches Daten aus einer Software per UDP als XML erhält ...

IDE & Editoren
IDE für C-Sharp und C++ auf Windows
gelöst Frage von BugdroidIDE & Editoren8 Kommentare

Hallo, Ich nutze derzeit Visual Studio, aber auf Dauer ist es mir etwas zu Ressourcenfressend und für meine Zwecke ...

C und C++
C Sharp XAML Universal
Frage von DippsC und C++3 Kommentare

Hallo ich versuche gerade mit C#2015 ein Projekt Universal XAML zu erstellen um auf einem Raberry PI 2 mit ...

C und C++
C-sharp SearchPattern (Regex)
Frage von YanmaiC und C++6 Kommentare

Hallo ihr Administratoren, ich verwende ein AUtocpmpletemenu Plugin. Dort habe ich Snippets, die dann sozusagen completed werden. Beim erstellen ...

Neue Wissensbeiträge
Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 5 MinutenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 14 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 17 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 18 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...