Hey Leute,
ich habe ein problem ich komm auf XML Dateien mal garnicht klar.
Ich versuche die ganze Zeit, ein XML Datei auszulesen und zu ändern.
Ich will ein Gefällt Mir Button machen(LANGEWEILE)
Nun soll ich aber, das pogramm schließen können und neu öffenen, und die anzeige in dem "Label1" soll wieder auf den Aktuellen "Count" gesetzt werden.
//LADEN
Das programm liest den Count aus und soll den dann in mein Label wieder einfügen.
//SPEICHERN
Das programm soll bei jedem klick auf den button den wert um 1 erhöhen(Was ich weiß wie das geht 😄) und dann auch den COUNT um 1 erhöhen.
Nun meine Lösung:
So sieht momentan meine XML aus!
<?xml version="1.0" encoding="utf-8" ?>
<Counter>
<Data Count="59" />
</Counter>
Nun der Code mit dem ich schreibe und Lese.
//LESEN
//Die Variablen
int count = 1;
int all = 0;
string a = DateTime.Now.ToShortDateString();
public Form1()
{
InitializeComponent();
try
{
XmlDocument doc = new XmlDocument();
doc.Load(@"test.xml");
XmlElement root = doc.DocumentElement;
foreach (XmlNode @Data in root.ChildNodes)
{
l_count.Text = @Data.Attributes["Count"].InnerText;
count = Convert.ToInt32(l_count.Text);
}
//Ein Label was mir das datum Anzeigt.
l_date.Text = DateTime.Now.ToLongDateString();
}
catch
{ }
}
Dieser Kann aber nicht vorher das Datum auslesen und dann die passende COUNT Variable rauslesen.
//SPEICHERN
private void Like_button_Click(object sender, EventArgs e)
{
all = count++;
l_count.Text = all.ToString();
XmlDocument doc = new XmlDocument();
XmlNode myRoot, myNode;
XmlAttribute myAttribute;
myRoot = doc.CreateElement("Counter");
doc.AppendChild(myRoot);
myNode = doc.CreateElement("Data");
myAttribute = doc.CreateAttribute("Count");
myAttribute.InnerText =l_count.Text;
myNode.Attributes.Append(myAttribute);
myRoot.AppendChild(myNode);
doc.Save(@"test.xml");
}
So der speichert nicht das Datum mit.
So soll die XML Datei aussehen:
<?xml version="1.0" encoding="utf-8" ?>
<COUNTER>
<Daten DATE ="29.10.2011" COUNT="50" />
<Daten DATE ="30.10.2011" COUNT="20" />
<Daten DATE ="31.10.2011" COUNT="30" />
</COUNTER>
Ich will das der das Datum ausliest und dann COUNT abliest.
Sagen wir wir haben den 30.10.2011 also steht dann im l_count(label) 20.
"Und sobald ich auf den button drücke erhöt sich die zahl in der XML und in dem l_count auch."
Das kann ich ja nur das Datum bekomme ich nicht hin.
Er soll auch selbständige wenn das datum nicht vorhanden ist eine weiter Zeile dazu schreiben.
Sagen wir ich starte das pogramm am 5.11.2011 neu und drücke 10 mal.
<?xml version="1.0" encoding="utf-8" ?>
<COUNTER>
<Daten DATE ="29.10.2011" COUNT="50" />
<Daten DATE ="30.10.2011" COUNT="20" />
<Daten DATE ="31.10.2011" COUNT="30" />
<Daten DATE ="5.11.2011" COUNT="10" />
</COUNTER>
Automatisch macht er das dazu.
Meine Lösung ist auch unten im Dateianhang zu finden.
FRAGE: Wie kann ich machen das das Datum mit in die Abfrage kommt. Erste datum abfragen mit dem Datum von heute abgleichen und dann den Count einfügen.
Kannst du mal das komplette Projekt anhängen. In diesem fehlen einige Dateien.
Ist angehängt.
verstehe zwar nicht warum du das braucht weil da nicht mehr drin steht als in meiner Frage aber egal.
Projekte bitte direkt anhängen. Sollten sie zu groß sein, dann kannst du per PM ans Team das auch dem Team mitteilen und dieses hängt es dann an.
...und ich frage mich, wo in Deinem unverständlichen Kauderwelsch die Frage versteckt ist?!? 😉
Robert Wachtel
Da ich heute nen guten Tag habe hab ich mal ein kleines Demo Projekt gemacht.
Es liest den aktuellen Eintrag aus dem XML aus. Erhöht dann den Count und speichert es wieder ab bzw erzeugt ein neues Node falls noch keines vorhanden ist.