C#] XML-file aktualisieren

yellowspam

Erfahrenes Mitglied
Hi@all:

Mal wieder ne Frage von mir, also ich habe ein XML-file erstellt, nun will ich das am vor beginn der Write-prozedur nachgesehen wird ob das file überhaupt schon existiert,
wenn ja dann soll einfach der Text in in den Textboxen in den <Download> - Tag geschrieben werden.

Ich habe mir gedacht ich machs mit nem Reader,aber ich bin nicht sicher, ob das so funktioniert, köntn ihr mir nen kleinen Denkanstoß geben?

Hier der Source der das XML-file erstellt:

Code:
protected void btntest(Object Sender, EventArgs e)
        {                          
            //definieren eines Streams welcher den Speicherort des xml-files angibt
            Stream pfad = new FileStream(@"D:\\Projects\\Projects_2007\\bluestep.DownloadManager.Solution\\bluestep.DownloadManager\\bluestep.DownloadManager\\xml\\urls.xml", FileMode.Append);

            //erstellt einen neuen XMLWriter
            XmlTextWriter objWriter = new XmlTextWriter(pfad, System.Text.Encoding.Default);

            //erzwingen von Syntaxeinrückungen
            objWriter.Formatting = Formatting.Indented;

            //beginnt das file zu schreiben
            objWriter.WriteStartDocument(false);
            objWriter.WriteStartElement("Downloads");

            objWriter.WriteStartElement("Download");

            //schreiben des namens des Dls
            objWriter.WriteElementString("name", txt_dlname.Text);

            //schreiben der URl
            objWriter.WriteElementString("url", txt_url.Text);

            //schreiben der Uhrzeit der eintragung
            objWriter.WriteElementString("CreationTime", txt_dltime.Text);

            //schreiben einer Beschreibung des Downloads
            objWriter.WriteElementString("Description", txt_content.Text);

            objWriter.WriteEndElement();
            objWriter.WriteEndElement();

            //schließen des Dokumentes
            objWriter.WriteEndDocument();

            //Datenstrom in XMLfile schreiben 
            objWriter.Flush();

            //speicher freigeben
            objWriter.Close();

            //ergebnisse ausgeben
            lbl_result.Text = "Eingetragen";

           
        }
 
Das Vorhandensein einer Datei kannst du mit
Code:
If (File.Exists("filename.xml"))
überprüfen.

Für die XML-Geschichte: Hier würde ich mit der XmlDocument-Klasse arbeiten. Einfach per SelectSingleNode die entsprechende Node laden, InnerText setzen und per Save speichern.
 
Hallo Norbert, erst mal danke für deine Hilfe.
Nun ich habe mich nun mit dem XmlDocument beschäftigt, dann bin ich aber nach zahllosen erfolglosen versuchen draufgekommen dass ich meine frage falsch formuliert habe, ich will nicht in den <Download>-Tag reinschreiben sondern ich will innerhalb des <Downloads>-Tags ein neues <Download>-Tag erstellen in dem dann die ganzen daten aus den Textboxen reinsollen.

Also es sollte dann so aussehen:

Code:
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
<Downloads>
  <Download>
    <name>Download 1</name>
    <url>http:google.at</url>
    <CreationTime>09:30</CreationTime>
    <Description>Info</Description>
  </Download>
  <Download>
    <name>Download 2</name>
    <url>http://www.orf.at</url>
    <CreationTime>09:40</CreationTime>
    <Description>Info</Description>
  </Download>
</Downloads>

Also hier die richtige Frage: Wie kann ich nach übeprüfung ob die Datei vorhanden ist, einen neuen <Download>-Tag einfügen?
 
Zuletzt bearbeitet:
Äh....nach vielen fruchtlosen Versuchen habe ich es nun endlich geschafft einen <Download>-Tag einzufügen, jedoch überschreibt die Funktion den Text ver vorher drin stand.

Wie sage ich dem XMLTextWriter wo das neue Tag hingeschrieben werden soll?
 

Neue Beiträge

Zurück