В настоящее время я загружаю файл XML в список объектов, используя код, подобный этому
XDocument xmlDoc = XDocument.Load(path);
List<ImportDefinition> importDefinitions = xmlDoc.Descendants("Root").Select(xElem => (ImportDefinition)xElem).ToList();
return importDefinitions;
Этот список объектов содержит вложенные объекты, и у каждого есть оператор для синтаксического анализа XML в правильную форму, подобную этой
public static explicit operator Rules(XElement xElem)
{
try
{
return new Rules()
{
FileNameRegEx = (string)xElem.Element("FileNameRegEx"),
FileExtension = (string)xElem.Element("FileExtension")
};
}
catch (Exception ex)
{
return null;
}
Это прекрасно работает для загрузки XML. Теперь я хочу сохранить этот список объектов обратно в XML после внесения некоторых изменений.
Я надеялся, что что-то подобное сработает
XElement xml = new XElement("Root",
from p in ObjectList
select new XElement("File",RootObject
));
}
xml.Save("C:\\temp\\newimport.xml");
Однако, похоже, это выдает
<?xml version="1.0" encoding="utf-8"?>
<Root>
<File>MyNamespace.RootObject</File>
<File>MyNamespace.RootObject</File>
</Root>
Похоже, что он не использует пользовательские операторы, которые он использует при загрузке файлов, чтобы определить формат для сохранения. Каков наилучший способ сохранить эти данные обратно в XML в том же формате, в котором они были при чтении?