使用XDocument对XML进行不规则的写入

时间:2015-07-03 22:42:41

标签: c# xml merge linq-to-xml

Goodday,

我一直在努力以XML格式存储数据,但我使用级别系统来允许用户访问某些数据而不是其他数据。但这发生在不同的周期中,数据被读取和写入不规则。这给了我以下错误:

  

其他信息:此操作会导致错误   结构化文件。

目前:

printf("%s", *animal)

这是完整的功能:

doc.Add(new XElement(UserLevel, new XElement(CommandName.Remove(0, 1), CommandInfo)));

我想要的是能够在具有不同CommandNames的同一UserLevel下写入文件,然后持有不同的CommandInfos。后来我打算能够编辑CommandInfo,所以我必须覆盖已编写的内容。

有谁知道我在找什么?因为我不知道自己......

感谢阅读, Farcrada

1 个答案:

答案 0 :(得分:2)

XML文档只能有一个根元素,而您似乎尝试添加多个根元素。只需创建一个顶级元素,例如Users,然后将UserLevel添加为其子元素。

这样的事情:

private bool SetCommands(string CommandName, string CommandInfo, string UserLevel)
{
    if (GetCommand(CommandName) == "none")
    {
        XDocument doc = new XDocument();

        if (File.Exists(XmlFileLocation))
            doc = XDocument.Load(XmlFileLocation);

        var users = doc.Root.Element("Users");
        if (users == null)
        {
            users = new XElement("Users");
            doc.Add(users);
        }

        users.Add(new XElement(UserLevel, new XElement(CommandName.Remove(0, 1), CommandInfo)));
        doc.Save(XmlFileLocation);
        return true;
    }
    else
    {
        return false;
    }
}