C# Linq到Xml保存嵌套对象列表
目前,我使用如下代码将XML文件加载到对象列表中C# Linq到Xml保存嵌套对象列表,c#,linq-to-xml,C#,Linq To Xml,目前,我使用如下代码将XML文件加载到对象列表中 XDocument xmlDoc = XDocument.Load(path); List<ImportDefinition> importDefinitions = xmlDoc.Descendants("Root").Select(xElem => (ImportDefinition)xElem).ToList(); return importDefinitions; 这对于加载XML非常有效。现在
XDocument xmlDoc = XDocument.Load(path);
List<ImportDefinition> importDefinitions = xmlDoc.Descendants("Root").Select(xElem => (ImportDefinition)xElem).ToList();
return importDefinitions;
这对于加载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>
MyNamespace.RootObject
MyNamespace.RootObject
看起来它没有使用加载文件时使用的自定义运算符来计算要保存的格式。将这些数据保存回XML的最佳方法是什么?它的格式与我阅读时的格式相同?首先,您只向我们展示了用于从XElement解析的运算符。。。但即便如此,您显然在LINQ表达式中明确地调用了它。如果您想在构建XML时获得同等的效果,还需要明确:
XElement xml = new XElement("Root",
from p in ObjectList
select new XElement("File", (XElement) p));
就我个人而言,我会使用方法而不是运算符-ToXElement()和FromXElement()-我认为这样更清楚
ToXElement
将是一个实例方法FromXElement
将是一种静态方法。这是我使用过很多次的一种模式,它总是很好地工作。首先,您只向我们展示了用于从XElement解析的运算符。。。但即便如此,您显然在LINQ表达式中明确地调用了它。如果您想在构建XML时获得同等的效果,还需要明确:
XElement xml = new XElement("Root",
from p in ObjectList
select new XElement("File", (XElement) p));
就我个人而言,我会使用方法而不是运算符-ToXElement()和FromXElement()-我认为这样更清楚ToXElement
将是一个实例方法FromXElement
将是一种静态方法。这是我用过很多次的一种模式,而且一直都很好