C#应用程序中的Xml文件结构错误

时间:2014-01-24 07:16:04

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

我是Linq To Xml的初学者,我想用这种结构创建一个新的Xml文件:

 XDocument doc = new XDocument(

        new XElement("files",
         new XElement("cam",data.CamFile),
         new XElement("modele",data.CamFile)
                     ),
         new XElement("parametre",
         new XElement("scoremin",data.Scoremin),
         new XElement("cupidite",data.Cupidite),
          new XElement("frameaxes",data.Frameaxes),
         new XElement("Npyramid",data.Npyramid))

         );

但是出现了此异常This operation would create an incorrectly structured document.

  1. 出现此错误的原因是什么?
  2. 我该如何解决?

1 个答案:

答案 0 :(得分:4)

如果您将应用正确的格式,您将看到您正在尝试定义两个根元素:

XDocument doc = new XDocument(
    new XElement("files",
        new XElement("cam", data.CamFile),
        new XElement("modele", data.CamFile)
    ),
    new XElement("parametre",
        new XElement("scoremin", data.Scoremin),
        new XElement("cupidite", data.Cupidite),
        new XElement("frameaxes", data.Frameaxes),
        new XElement("Npyramid", data.Npyramid)
    ));

XML中不允许这样做。 XML文档必须包含一个元素,该元素是所有其他元素的父元素。此元素称为根元素(请参阅XML Syntax)。要parametre嵌套元素files

XDocument doc = new XDocument(
    new XElement("files",
        new XElement("cam", data.CamFile),
        new XElement("modele", data.CamFile),
        new XElement("parametre",
            new XElement("scoremin", data.Scoremin),
            new XElement("cupidite", data.Cupidite),
            new XElement("frameaxes", data.Frameaxes),
            new XElement("Npyramid", data.Npyramid)
    )));

或将两者都包装在其他元素中:

XDocument doc = new XDocument(
    new XElement("root",
        new XElement("files",
            new XElement("cam", data.CamFile),
            new XElement("modele", data.CamFile)
            ),
        new XElement("parametre",
            new XElement("scoremin", data.Scoremin),
            new XElement("cupidite", data.Cupidite),
            new XElement("frameaxes", data.Frameaxes),
            new XElement("Npyramid", data.Npyramid)
    )));