此操作将创建结构不正确的文档

Viv*_*ekh 20 .net c# linq asp.net linq-to-xml

我是新手,XML并尝试了以下但我得到了一个例外.有人能帮我吗?

例外是 This operation would create an incorrectly structured document

我的代码:

string strPath = Server.MapPath("sample.xml");
XDocument doc;
if (!System.IO.File.Exists(strPath))
{
    doc = new XDocument(
        new XElement("Employees",
            new XElement("Employee",
                new XAttribute("id", 1),
                    new XElement("EmpName", "XYZ"))),
        new XElement("Departments",
            new XElement("Department",
                new XAttribute("id", 1),
                    new XElement("DeptName", "CS"))));

    doc.Save(strPath);
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 29

Xml文档必须只有一个根元素.但是您尝试在根级别添加两个节点DepartmentsEmployees节点.添加一些根节点来解决此问题:

doc = new XDocument(
    new XElement("RootName",
        new XElement("Employees",
            new XElement("Employee",
                new XAttribute("id", 1),
                new XElement("EmpName", "XYZ"))),

        new XElement("Departments",
                new XElement("Department",
                    new XAttribute("id", 1),
                    new XElement("DeptName", "CS"))))
                );
Run Code Online (Sandbox Code Playgroud)

  • 他们可能会考虑使此错误消息更明确.像"XML文档可能只有一个根元素"之类的东西.即使知道这个事实,单独通过此错误消息很难理解该问题. (3认同)

Til*_*lak 12

您需要添加根元素.

doc = new XDocument(new XElement("Document"));
    doc.Root.Add(
        new XElement("Employees",
            new XElement("Employee",
                new XAttribute("id", 1),
                    new XElement("EmpName", "XYZ")),
        new XElement("Departments",
            new XElement("Department",
                new XAttribute("id", 1),
                    new XElement("DeptName", "CS")))));
Run Code Online (Sandbox Code Playgroud)