XML写作问题

时间:2011-08-08 20:19:09

标签: c#

我正在尝试写入某个结构中的xml文件,但遇到了一些问题。我想将几个XElements写入XML中的某个XElement。例如:

        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)));

这里我构建了几个想要作为子节点添加到xml中另一个节点的XElements。

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

......是上面创建的列表中的每个元素都将添加但我不知道有多少元素,所以我无法找到将其添加到超级节点的方法。

以上是我想要添加上面创建的子节点的超级节点。问题是,我似乎无法得到正确的逻辑,所以最终,xml将如下所示:

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

1 个答案:

答案 0 :(得分: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)));