从C#写入xml

时间:2014-07-04 12:13:51

标签: c# xml linq

我有一个关于用C#写入xml的问题。我想要这种结构;

<directory_move>
   <folder_path>
      <source_path>...</source_path>
      ..
      ..
   </folder_path>
   <properties>
      <aaabbcc>....</aaabbcc>
      ..
      ..
   </properties>
</directory_move>

我尝试了很多,却无法获得我想要的东西。 你能提出建议,我该怎么做?

这是我的代码

        XElement element = new XElement("DIRECTORY_MOVE");

        foreach (string sourceDirName in listArray)
        {
            element.Add(new XElement("SOURCE_PATH", sourceDirName));
        }

        element.Add(new XElement("DESTINATION_PATH", destination));


        if (rdbtnDoLater)
        {
            element.Add(new XElement("RDBTNDOLATER", "checked"));
        }

        if (rdbtnDoImmediately)
        {
            element.Add(new XElement("RDBTNDOIMMEDIATELY", "checked"));
        }

        if (chkIsOverwrite)
        {
            element.Add(new XElement("CHKISOVERWRİTE", "checked"));
        }

        if (chkExitWhenFinish)
        {
            element.Add(new XElement("CHKEXITWHENFINISH", "checked"));
        }

        if (chkFolderQuestion)
        {
            element.Add(new XElement("CHKFOLDERQUESTION", "checked"));
        }

1 个答案:

答案 0 :(得分:1)

使用Linq to XML

XElement example =
    new XElement("directory_move",
        new XElement("folder_path",
            new XElement("source_path", "..."),
            new XElement("source_path", "...")
        ),
        new XElement("properties",
            new XElement("aaabbcc", ...)
        )
    );

example.WriteToFile(...)

编辑:您的代码的问题在于您将所有内容添加到根元素中,因此所有内容都将是此根目录的子代。

您需要做的是重现层次结构,就像我在我的示例中所做的那样。

XElement root = new XElement("DIRECTORY_MOVE");
XElement folderPath = new XElement("folder_path");

root.Add(folderPath)

foreach (string sourceDirName in listArray)
{
     folderPath.Add(new XElement("SOURCE_PATH", sourceDirName));
}

依旧......