Discussion:
XML Daten einfügen
(zu alt für eine Antwort)
Volker Hofheinz
2011-08-06 08:37:49 UTC
Permalink
Hallo NG,

folgendes Problem:
ich habe eine XML-Datei, die per Programm befüllt werden soll. Der Aufbau
sieht folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8"?>
<mediation>
<med>
<ID>456</ID>
<Datum>15.02.2011</Datum>
<Filename>med2.xls</Filename>
</med>
<med>
<ID>123</ID>
<Datum>30.01.2011</Datum>
<Filename>med.xls</Filename>
</med>
<med>
<ID>555</ID>
<Datum>06.08.2011 10:14:51</Datum>
<Filename>c:\med.xls</Filename>
</med>
</mediation>

Nun will ich einen neuen Knoten med mit Inhalt befüllen. Der Code sieht
folgendermaßen aus:

void XML-Befuellen()
{
XmlDocument xd = new XmlDocument();
xd.Load(@"d:\\mediation.xml");
XmlNode root = xd.DocumentElement, node;
if (root != null)
{

node = root.LastChild;
root.AppendChild(xd.CreateElement("med"));
node = root.SelectSingleNode("med");

node.AppendChild(xd.CreateElement("ID")).InnerText = "555";
node.AppendChild(xd.CreateElement("Datum")).InnerText =
System.DateTime.Now.ToString();
node.AppendChild(xd.CreateElement("Filename")).InnerText =
"c:\\med.xls";

}
xd.Save(@"d:\\mediation.xml");
}

Er schreibt die Elemente aber immer in ein bestehenden Node.

Wo liegt mein Denkfehler?

Gruß und Danke,

Volker

P.S. habe bisher mit XML keine Erfahrungen
sowhat
2011-08-07 05:14:24 UTC
Permalink
Post by Volker Hofheinz
node = root.SelectSingleNode("med");
node.AppendChild(xd.CreateElement("ID")).InnerText = "555";
node.AppendChild(xd.CreateElement("Datum")).InnerText =
System.DateTime.Now.ToString();
node.AppendChild(xd.CreateElement("Filename")).InnerText = "c:\\med.xls";
Wo liegt mein Denkfehler?
was bezweckst du mit dem SelectSingleNode an der Stelle?


---------------fixed if block ----
root.AppendChild(xd.CreateElement("med"));
node = root.LastChild;

node.AppendChild(xd.CreateElement("ID")).InnerText = "555";
node.AppendChild(xd.CreateElement("Datum")).InnerText =
System.DateTime.Now.ToString();
node.AppendChild(xd.CreateElement("Filename")).InnerText = "c:\\med.xls";
-------------------------------------
sowhat
2011-08-08 14:33:41 UTC
Permalink
nachtrag:

wenn das ganze produktiver Code werden soll, der später noch weiter
entwickelt werden müsste/könnte, würde ich an deiner Stelle mal XSLT
anschauen, anstatt die XML händisch zu ergänzen.
Post by sowhat
Post by Volker Hofheinz
node = root.SelectSingleNode("med");
node.AppendChild(xd.CreateElement("ID")).InnerText = "555";
node.AppendChild(xd.CreateElement("Datum")).InnerText =
System.DateTime.Now.ToString();
node.AppendChild(xd.CreateElement("Filename")).InnerText = "c:\\med.xls";
Wo liegt mein Denkfehler?
was bezweckst du mit dem SelectSingleNode an der Stelle?
---------------fixed if block ----
root.AppendChild(xd.CreateElement("med"));
node = root.LastChild;
node.AppendChild(xd.CreateElement("ID")).InnerText = "555";
node.AppendChild(xd.CreateElement("Datum")).InnerText =
System.DateTime.Now.ToString();
node.AppendChild(xd.CreateElement("Filename")).InnerText = "c:\\med.xls";
-------------------------------------
Lesen Sie weiter auf narkive:
Loading...