ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
457
457
EMPFEHLEN
-
Hallo ihr Lieben,
ich hab da mal eine Frage, vielleicht könnt ihr mir ja helfen.
Mit meinem geschriebenen Programm kann ich ohne Probleme eine XML-Datei auslesen und erstellen die dann beschrieben wird, außerdem kann ich die bestehende Datei auch ohne Probleme verändern, aber NUR wenn der Knoten existiert.
Die Struktur der XML ist in etwa so:
Code :1 2 3 4 5 6 7 8 9
<test_db pfad="c:\datenbank\test" update_db="\\Dbprod\updates\test"> <update tag="mo" von="7:00" bis="9:00" /> <update tag="di" von="7:00" bis="9:00" /> <update tag="mi" von="7:00" bis="9:00" /> <update tag="do" von="7:00" bis="9:00" /> <update tag="fr" von="7:00" bis="9:00" /> <update tag="sa" von="7:00" bis="9:00" /> <update tag="so" von="7:00" bis="9:00" /> </text_db>
Wie gesagt auslesen und verändern bekomme ich hin.
Jetzt kommt das Problem:
Falls in der XML z.B. der "mo" nicht existiert, soll er erstellt werden, doch leider bekomme ich das nicht hin.
Ich habe es mit der selben Struktur wie beim erstellen probiert, doch leider klappt es nicht.
Habt ihr eine Idee?
Ich poste euch einfach mal die Methode die sich um den Abschnitt der XML kümmert..
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
public void tagAendern(XmlNode date, XmlDocument doc, bool valueB, String tag, CheckBox checkBox) { XmlNode myNode; XmlAttribute myAttribute; if (@date.Name.Equals("update")) { if (valueB == false) { if (@date.Attributes["tag"].InnerText.Equals(tag)) { if (checkBox.Checked == true) { @date.Attributes["tag"].InnerText = tag; @date.Attributes["von"].InnerText = st_h_box.Text + ":" + st_min_box.Text; @date.Attributes["bis"].InnerText = en_h_box.Text + ":" + en_min_box.Text; valueB = true; MessageBox.Show(tag + " existiert"); } else if (checkBox.Checked == false) { if (@date.Attributes["tag"].InnerText.Equals(tag)) { @date.Attributes["tag"].InnerText = tag; @date.Attributes["von"].InnerText = "0:00"; @date.Attributes["bis"].InnerText = "0:00"; valueB = true; } } } else if (!@date.Attributes["tag"].InnerText.Equals(tag)) { if (checkBox.Checked == true) { myNode = doc.CreateElement("update"); myAttribute = doc.CreateAttribute("tag"); myAttribute.InnerText = tag; myNode.Attributes.Append(myAttribute); myAttribute = doc.CreateAttribute("von"); myAttribute.InnerText = st_h_box.Text + ":" + st_min_box.Text; myNode.Attributes.Append(myAttribute); myAttribute = doc.CreateAttribute("bis"); myAttribute.InnerText = en_h_box.Text + ":" + en_min_box.Text; myNode.Attributes.Append(myAttribute); valueB = true; } else if (checkBox.Checked == false) { myNode = doc.CreateElement("update"); myAttribute = doc.CreateAttribute("tag"); myAttribute.InnerText = tag; myNode.Attributes.Append(myAttribute); myAttribute = doc.CreateAttribute("von"); myAttribute.InnerText = "0:00"; myNode.Attributes.Append(myAttribute); myAttribute = doc.CreateAttribute("bis"); myAttribute.InnerText = "0:00"; myNode.Attributes.Append(myAttribute); valueB = true; } } } } }
Und vielleicht auch gar nicht so uninteressant wo und wie die Methode aufgerufen wird.
Danke schon mal im Voraus!!Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
if (@daten.Name.Equals("test_db")) { if (pfadezuweisen_checkBox.Checked == true) { @daten.Attributes["pfad"].InnerText = allePfadeBox.Text + "\\test"; } else if (pfadezuweisen_checkBox.Checked == false) { @daten.Attributes["pfad"].InnerText = testPfadBox.Text; } @daten.Attributes["update_db"].InnerText = testUpdate_textBox.Text; foreach (XmlNode @date in @daten.ChildNodes) { tagAendern(@date, doc, false, "mo", montag_checkBox); tagAendern(@date, doc, false, "di", dienstag_checkBox); tagAendern(@date, doc, false, "mi", mittwoch_checkBox); tagAendern(@date, doc, false, "do", donnerstag_checkBox); tagAendern(@date, doc, false, "fr", freitag_checkBox); tagAendern(@date, doc, false, "sa", samstag_checkBox); tagAendern(@date, doc, false, "so", sonntag_checkBox); } }
Liebe Grüße
Polli.Geändert von Polli (12.10.10 um 09:00 Uhr) Grund: aufrufen der Methode
Jeder Moment ist eine neue Chance, nutze sie!!
Wer lächelt statt zu toben, ist immer der Stärkere.
-
Hi
Schau dir mal XPath an. Darüber kannst du Abfragen an Xml stellen und somit auch prüfen, ob es ein Tag mit einem bestimmten Attribut und Wert auch gibt.
WEnn das nicht der Fall ist, legst du es anGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
Ähnliche Themen
-
Tabelleneintrag bearbeiten und in mssql DB schreiben
Von guskg im Forum PHPAntworten: 2Letzter Beitrag: 04.06.09, 10:40 -
mehrdimensionalen String Array einlesen, bearbeiten und schreiben!
Von devilofdawn im Forum JavaAntworten: 1Letzter Beitrag: 28.06.07, 07:55 -
Dateien zum lesen und schreiben öffnen, darin Navigieren und bearbeiten
Von jnn im Forum C/C++Antworten: 10Letzter Beitrag: 19.03.05, 20:33 -
Eintrag in Datenbank schreiben, bearbeiten oder löschen!
Von anearlycascade im Forum PHPAntworten: 2Letzter Beitrag: 26.12.04, 00:24 -
in XML file schreiben/bearbeiten/speichern
Von derDomal im Forum C/C++Antworten: 3Letzter Beitrag: 10.02.04, 10:19





Zitieren

Login





