Ling2Xml

10/11/2009 - 12:42 von ChristianH | Report spam
Hi,

ich möchte eine XML-Datei wie nachstehend erstellen, neue Elemente (item)
hinzufügen (mit zwei Attributen), bestehende Elemente àndern und Elemente aus
dieser wieder entfernen.

<items>
<item identifier="id1" directory="test1" ></item>
<item identifier="id2" directory="test2" ></item>
</items>

Gerne würde ich hierfür Linq2Xml verwenden.
Wie mache ich dies am geschicktesten?
Grüße
Christian
 

Lesen sie die antworten

#1 Martin Honnen
10/11/2009 - 13:19 | Warnen spam
ChristianH wrote:

ich möchte eine XML-Datei wie nachstehend erstellen, neue Elemente (item)
hinzufügen (mit zwei Attributen), bestehende Elemente àndern und Elemente aus
dieser wieder entfernen.

<items>
<item identifier="id1" directory="test1" ></item>
<item identifier="id2" directory="test2" ></item>
</items>

Gerne würde ich hierfür Linq2Xml verwenden.
Wie mache ich dies am geschicktesten?



Erzeugen kannst du obiges per
XDocument doc = new XDocument(
new XElement("items",
new XElement("item",
new XAttribute("identifier", "id1"),
new XAttribute("directory", "test1")
),
new XElement("item",
new XAttribute("identifier", "id2"),
new XAttribute("directory", "test2")
)
)
);

Ändern kannst du dann z.B. per
string id = "id2";
doc.Root
.Elements("item")
.First(i => id = i.Attribute("identifier").Value)
.SetAttributeValue("directory", "Noch ein Test");

Dabei wird angenommen, dass ein "item"-Element mit dem
identifier-Attribut existiert. So das nicht vorausgesetzt werden kann,
besser

string id = "id2";
XElement item doc.Root
.Elements("item")
.First(i => id = i.Attribute("identifier").Value);

if (item != null)
item.SetAttributeValue("directory", "Noch ein Test");

Entfernen per Selektieren der Elemente und Aufruf von Remove, z.B.
doc.Root.Elements("item").Where(i =>
i.Attribute("directory").StartsWith("test")).Remove();


Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen