我正在尝试创建一个看起来像这样的XML:
<RootList>
<Root>
<ID>value1</ID>
<Number>value2</Number>
<Quantity>value3</Quantity>
</Root>
<Root>
<ID>value1</ID>
<Number>value2</Number>
<Quantity>value4</Quantity>
</Root>
<Root>
<ID>value5</ID>
<Number>value6</Number>
<Quantity>value7</Quantity>
</Root>
</RootList>
使用以下接口的实例。
interface IRoot
{
int ID { get; }
string Number { get; set; }
List<IQuantity> List { get; set; }
}
interface IQuantity
{
int QuantityID { get; }
double Quantity { get; set; }
}
下面的代码是我用来创建XML的,但是由于StackoverFlowException而终止该过程。
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("RootList",
this._list.Select(root =>
root.List.Select(quantity =>
new XElement("Root",
new XElement("ID", root.ID.ToString()),
new XElement("Number", root.Number),
new XElement("Quantity", quantity.Quantity.ToString())
)
)
)
)
);
如果我删除了内部选择(在列表中的列表中迭代的地方),则输出有效。我不知道如何实际跟踪此错误,但是我敢肯定这是由于内部选择所致。还有其他人遇到相同的问题,还是对此有任何建议?:)
现在找到了问题,我认为它们是不必要的,因为我认为它们是不必要的,但是在第一个root的儿童节点下,将有一个类变量作为其值。我从中制作了一个私人静态指导_,现在它起作用了。我求您原谅。