我可以使用XDocument构建以下正常工作的文件:
XDocument xdoc = new XDocument
(
new XDeclaration("1.0", "utf-8", null),
new XElement(_pluralCamelNotation,
new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
),
new XElement(_singularCamelNotation,
new XElement("id", "2"),
new XElement("whenCreated", "2008-12-31")
)
)
);
但,我需要通过遍历集合来构建XML文件,如下所示:
XDocument xdoc = new XDocument
(
new XDeclaration("1.0", "utf-8", null));
foreach (DataType dataType in _dataTypes)
{
XElement xelement = new XElement(_pluralCamelNotation,
new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
));
xdoc.AddInterally(xelement); //PSEUDO-CODE
}
添加, AddFirst , AddAfterSelf , AddBeforeSelf ,但我无法使用它们在这种背景下。
是否可以使用这样的LINQ迭代?
我把Jimmy的代码建议与root标签一起使用,稍微改了一下,这正是我想要的:
var xdoc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement(_pluralCamelNotation,
_dataTypes.Select(datatype => new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
))
)
);
Marc Gravell对此on this StackOverflow question发布了更好的答案。
答案 0 :(得分:26)
你需要一个根元素。
var xdoc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("Root",
_dataTypes.Select(datatype => new XElement(datatype._pluralCamelNotation,
new XElement(datatype._singlarCamelNotation),
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
))
)
);
答案 1 :(得分:3)
如果我没弄错,你应该可以使用XDocument.Add():
XDocument xdoc = new XDocument
(
new XDeclaration("1.0", "utf-8", null));
foreach (DataType dataType in _dataTypes)
{
XElement xelement = new XElement(_pluralCamelNotation,
new XElement(_singularCamelNotation,
new XElement("id", "1"),
new XElement("whenCreated", "2008-12-31")
));
xdoc.Add(xelement);
}
答案 2 :(得分:3)
我知道这是非常古老的帖子,但我今天偶然发现了这个问题,试图解决同样的问题。您必须将元素添加到文档的根目录:
xdoc.Root.Add(xelement);
答案 3 :(得分:2)
简单的Add method有什么问题?