Laden...

[erledigt] neues Element in XML-Datei einfügen

Erstellt von aligator vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.447 Views
A
aligator Themenstarter:in
3 Beiträge seit 2011
vor 13 Jahren
[erledigt] neues Element in XML-Datei einfügen

verwendetes Datenbanksystem: XML

Hi
ich habe eine XML-Datei, welche ich in ein XmlDocument geladen hab.
mit dem code:


            XmlElement newElem = doc.CreateElement("File");
            XmlElement el = doc.CreateElement("File");


            // Add the attributes.
            XmlAttribute newAttr = doc.CreateAttribute("fileId");
            newAttr.Value = "99999";
            newElem.Attributes.Append(newAttr);

            newAttr = doc.CreateAttribute("filename");
            newAttr.Value = "onstwas.png";
            newElem.Attributes.Append(newAttr);

            newAttr = doc.CreateAttribute("relativePath");
            newAttr.Value = "true";
            newElem.Attributes.Append(newAttr);


            doc.DocumentElement.AppendChild(newElem);

kann ich das Element am Ende der Datei einfügen.
aber wie bekomme ich es hin, das Element zwischen den schon vorhandenen Tags <Files> und </Files> einzufügen?

Ich hoffe ihr könnt mir helfen.

Mfg aligator

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo Aligator und Herzlich willkommen hier im Forum,

um ein Element zwischen die File Elemente zu bekommen, musst du es nur einem der Files Child Elemente hinzufügen.

dass heißt Du musste erst deine Files ChildNodes suchen, und dann diesem gefundenen Node dein File anhängen.

Viele Grüße
Lars

A
aligator Themenstarter:in
3 Beiträge seit 2011
vor 13 Jahren

und da ist mein problem:
ich bekomms einfacch nicht hin...

geht das vieleicht mit:

doc.DocumentElement.GetElementsByTagName("Files");

?(

also es gibt in der xml nur einmal "Files" und darin sind File-Elemente. und so eines will ich dazuschreiben:
<Files>
<File fileId="24" filename="map01/asphalt_weight.png" relativePath="true" />
<File fileId="18" filename="map01/beachSand_weight.png" relativePath="true" />
<File fileId="75" filename="map01/bushes_density.png" relativePath="true" />
<File fileId="79" filename="map01/cultivator_density.png" relativePath="true" />
<File fileId="27" filename="map01/fruit_density.png" relativePath="true" />
.
.
.
.
</Files>

Mfg aligator

2.223 Beiträge seit 2005
vor 13 Jahren

HAllo Aligator,

versuche es mal so


var data = doc.GetElementsByTagName("Files");
			data[0].AppendChild(...);

da GetElementByName eine NodeList zurückgibt (da theoretisch mehr als ein Element gefunden werden kann) bekommst Du eine List, da du ja weißt das es nur ein File Element gibt, kannst du auf das Erste Element zugreifen und diesem Node deine Daten anhängen.

Viele Grüße
Lars

A
aligator Themenstarter:in
3 Beiträge seit 2011
vor 13 Jahren

Danke, das ist genau das, was ich brauche. 👍

Mfg aligator