2011-03-12 29 views
1

我已經格式化像我的LINQ代碼中的另一個頂級節點:如何添加

<Deck> 
    <Treasure> 
    <card> 
    ..... 
    </card> 
    ...... 
    </treasure> 
    <Door> 
    <card> 
    ..... 
    </card> 
    ...... 
    </Door> 

在下面的代碼如何添加另一扇門是同一「級別」爲寶?我嘗試過的所有東西都將它作爲與卡片相同的等級進行添加。以下是我有:

public void SaveXml(string path) 
    { 
     XElement xml; 
     XElement root = new XElement("Treasure"); 
     foreach (var item in TreasureCards) 
     { 
      xml = new XElement("Card", 
        new XAttribute("name", item.Name), 
        new XElement("Type", item.Type), 
        new XElement("Image", 
        new XAttribute("path", item.Image)), 
        new XElement("Usage", item.Usage), 
        new XElement("Quantity", item.Quantity), 
        new XElement("Sell", item.Sell) 
        ); 
      root.Add(xml); 
     } 
     root.Add(new XElement("Door")); 
     foreach (var item in DoorCards) 
     { 
      xml = new XElement("Card", 
        new XAttribute("name", item.Name), 
        new XElement("Type", item.Type), 
        new XElement("Image", 
        new XAttribute("path", item.Image)), 
        new XElement("Usage", item.Usage), 
        new XElement("Quantity", item.Quantity)); 
      root.Add(xml); 
     } 
+0

你的'root'是'Treasure'元素。所以'root.Add'將把元素添加爲'Treasure'的子元素。你需要'root'作爲'Deck'元素。 – 2011-03-12 23:03:33

回答

1

您需要創建的甲板元素第一:

XElement deck = new XElement("Deck"); 

然後同時添加寶(我已經採取了從根到寶重命名的自由)和它的大門:

XElement treasure = new XElement("Treasure") 
... 
deck.Add(treasure) 
... 
XElement door = new XElement("Door") 
... 
deck.Add(door) 
+0

謝謝Rob!我能夠得到它的工作。 :) – Stacey 2011-03-12 23:16:58