C# xml Unterebene Einfügen

Gast #2729883
Lesenswert?

Hallo zusammen,

ich habe ein Problem bei einem c# Programm. Ich möchte eine xml Datei 
erzeugen, die mehrere Ebenen hat. In der Untersten Ebene sollen Daten 
stehen.
Mein Problem ist, dass ich keine zwei Unterbenenen hinbekomme.

so soll das ganze aussehen:
1
<?xml version="1.0" standalone="yes"?>
2
<file xmlns="test">
3
  <dataset>
4
    <data test1="1" test2="2" />
5
  </dataset>
6
</file>

so sieht es bisher aus:
1
<?xml version="1.0" standalone="yes"?>
2
<file xmlns="test">
3
  <data test1="1" test2="2" />
4
</file>

mein Code dafür ist:
1
XmlDocument doc = new XmlDocument();
2
           
3
XmlDeclaration Decl = doc.CreateXmlDeclaration("1.0", null, null);
4
doc.AppendChild(Decl);
5

6
XmlNode myRoot = doc.CreateElement("file");            
7
XmlAttribute atrr = doc.CreateAttribute("xmlns");
8
            
9
atrr.Value = "test";
10
myRoot.Attributes.Append(atrr);
11
            
12
doc.AppendChild(myRoot);
13

14
myRoot.AppendChild(doc.CreateElement("data"));
15
            myRoot.SelectSingleNode("data").Attributes.Append(doc.CreateAttribute("test1")).InnerText = "1";
16
 
17
myRoot.SelectSingleNode("data").Attributes.Append(doc.CreateAttribute("test2")).InnerText = "2";           
18
    
19
doc.Save(xml_temp);

Gruß
#2729973
Lesenswert?

Und wenn du hier
1
   myRoot.AppendChild(doc.CreateElement("data"));

anstelle der 'Rundumschlagmethode' ganz einfach eine Zwischenvariable 
benutzt
1
  XmlNode dataNode = doc.CreateElement("data");
2
  myRoot.AppendChild( dataNode );

dann brauchst du hier
1
            myRoot.SelectSingleNode("data").Attributes.Append(doc.CreateAttribute("test1")).InnerText = "1";

nicht wie ein Wilder von der Root ausgehen den gerade erst erzeugten 
Node suchen, sondern kannst ganz einfach mittels
1
  dataNode.Attributes.Append(doc.CreateAttribute("test1")).InnerText = "1";
den Attributen dieses gerade erst erzeugten XmlNode ein neues Attribut 
hinzufügen.

Wenn du noch nicht so firm bist, solltest du der Versuchung widerstehen, 
alles so dicht wie möglich zu schreiben. Ein paar Hilfsvariablen schaden 
nicht und alles wird gleich viel klarer. Und PS: Dein Strukturproblem 
wird damit geradezu trivial.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren