Ich versuche, eine kleine XML-Datei mit C# Linq XDocument zu schreiben.C# Linq XDoc - Element mit demselben Namen hinzufügen
Die endgültige XML-Datei sollte wie folgt aussehen:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Asset InternalID="SOMEID" LastSaveDate="2016-10-28" LastSaveTime="01:01:33:00" AssetType="New">
<type_metadata>
<FIELD name="filename">SOMEID.MOV</FIELD>
<FIELD name="duration">00:00:00:10</FIELD>
</type_metadata>
</Asset>
</Root>
Hier ist mein Code:
XDocument doc = new XDocument(new XDeclaration("1.0", "UTF-8", null));
doc.Add(new XElement("Root"));
doc.Element("Root").Add(new XElement("Asset"));
doc.Element("Root").Element("Asset").Add(new XAttribute("InternalID", a.InternalID));
doc.Element("Root").Element("Asset").Add(new XAttribute("LastSaveDate", a.lastSaveDate));
doc.Element("Root").Element("Asset").Add(new XAttribute("LastSaveTime", a.lastSaveTime));
doc.Element("Root").Element("Asset").Add(new XAttribute("AssetType", a.AssetType));
doc.Element("Root").Element("Asset").Add(new XElement("type_metadata"));
doc.Element("Root").Element("Asset").Element("type_metadata").Add(new XElement("FIELD"));
doc.Element("Root").Element("Asset").Element("type_metadata").Element("FIELD").Add(new XAttribute("name","filename"));
doc.Element("Root").Element("Asset").Element("type_metadata").Element("FIELD").Value = a.filename;
doc.Element("Root").Element("Asset").Element("type_metadata").Add(new XElement("FIELD"));
doc.Element("Root").Element("Asset").Element("type_metadata").Element("FIELD").Add(new XAttribute("name", "duration"));
doc.Element("Root").Element("Asset").Element("type_metadata").Element("FIELD").Value = a.duration;
Alles funktioniert gut, bis ich versuche, in der zweiten "FIELD" Element zu setzen. Was ist der richtige Weg, dies zu tun? Ich habe etwas recherchiert, aber ich kann keine einfache Antwort finden, die direkt relevant ist für das, was ich erreichen möchte.
Die letzten 3 Zeilen fügen ein zweites Element namens "FIELD" (mit verschiedenen Attributen) hinzu. Der Fehler ist Eine nicht behandelte Ausnahme vom Typ 'System.InvalidOperationException' in System.Xml.Linq.dll aufgetreten. Nachricht: Doppeltes Attribut –