2011-08-08 106 views
1

我正在嘗試寫入特定結構中的xml文件,並遇到一些問題。我想用XML編寫幾個XElement到某個XElement。例如:XML寫入問題

 foreach (XMLFieldInfo Field in XMLFields) 
      Fields.Add(new XElement("Field", new XElement("Name", Field.FieldID), new XElement("InclusionItems", Field.InclusionListToWriteToXML), new XElement("ExclusionItems", Field.ExclusionListToWriteToXML))); 

在這裏,我建立了幾個XElements,我想添加爲XML到另一個節點的子節點。

XElement LockboxConfigTree = new XElement("Student", new XElement("ID", cmbID.Text.Trim()), .................); 

的......就是在上面創建的列表中的每個元素將被添加,但我不知道有多少元素,所以我不能找到一種方法,將其添加到超級節點。

以上是我想要添加上面創建的子節點的超節點。問題是,我似乎無法得到正確的邏輯,所以在最後,XML將是這樣的:

<Student> 
    <ID></ID> 
    <Field> 
    <Name></Name> 
    <InclusionList></InclusionList> 
    <ExclusionList></InclusionList> 
    </Field> 
</Student> 

回答

2

XElement constructor支持enumerable參數。

您只需將您的Fields變量:

XElement LockboxConfigTree = new XElement("Student", 
           new XElement("ID", cmbID.Text.Trim()), 
           Fields); 

事實上,使用LINQ,你甚至不需要一個Fields變量:

XElement LockboxConfigTree 
    = new XElement("Student", 
      new XElement("ID", cmbID.Text.Trim()), 
      from field in XMLFields 
      select new XElement("Field", 
        new XElement("Name", field.FieldID), 
        new XElement("InclusionItems", 
         field.InclusionListToWriteToXML), 
        new XElement("ExclusionItems", 
         field.ExclusionListToWriteToXML)));