C# Linq XDocument를 사용하여 작은 XML 파일을 작성하려고합니다.C# Linq XDoc - 같은 이름의 요소를 추가하십시오.
최종 XML 파일은 다음과 같이한다 : 나는 두 번째 "FIELD"요소에 넣어하려고 할 때까지
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;
모든 것이 잘 작동 :
<?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>
여기 내 코드입니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 나는 약간의 연구를 해왔지만, 내가 성취하고자하는 것에 직접적으로 관련된 간단한 대답을 찾을 수 없다.
마지막 세 줄에는 두 번째 요소 인 "FIELD"(속성이 다름)가 추가됩니다. 이 오류는 System.Xml.Linq.dll에서 'System.InvalidOperationException'형식의 처리되지 않은 예외가 발생했습니다. 메시지 : 중복 특성입니다. –