使用for循环使用带有可变数量的XElements的XDocument创建XML

时间:2011-10-30 18:20:20

标签: c# xml

我需要根据e的值(每次都不同)将可变数量的XElements添加到我的XML文档中。我想我需要做类似于下面的事情,但下面的代码给了我6个错误。这些是:

  • 只有赋值,调用,递增,递减和新对象表达式才能用作语句x 2
  • 无效的表达术语'for'/')'/')'
  • 预期

    int e = 3;
    
    doc.Root.Add(new XElement(ns + "LineItemList",
    
    for(int i = 0; i <= e; i++)
    {
        new XElement("ItemNumber", i.ToString());
    }
    
    ));
    

我做错了什么?

以另一种方式提出我的问题,我的理解是要将LineItem元素放在LineItemListelement中,我需要将LineItem放在LineItemList的声明中。

如果有人可以告诉我如何明确地打开和关闭元素,而不是隐式打开和关闭它们,这将有很大帮助。

3 个答案:

答案 0 :(得分:6)

试试这个:

int e = 3;
XDocument doc = new XDocument(
          new XElement(ns + "LineItemList",
               Enumerable.Range(0, e).Select(i => new XElement("ItemNumber", i))
          ));

答案 1 :(得分:2)

我认为你在寻找:

int e = 3;
XElement lineElement = new XElement(ns + "LineItemList");
doc.Root.Add(lineElement);
for(int i = 0; i <= e; i++) 
{ 
  XElement itemElement = new XElement("ItemNumber", i.ToString());
  lineElement.Add(itemElement)
}

答案 2 :(得分:0)

您不能在方法调用中使用for循环。

也许你想做这样的事情:

for(int i = 0; i <= e; i++) { 
    XElement element = new XElement("ItemNumber", i.ToString()); 
    doc.Root.Add(element);
}

我没有测试此代码。

相关问题