Я новичок в 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. Как я могу это исправить ??
0
Lamloumi Afif 24 Янв 2014 в 11:16
Смотри мое редактирование, пожалуйста
 – 
Lamloumi Afif
24 Янв 2014 в 11:22

1 ответ

Лучший ответ

Если вы примените правильное форматирование, вы увидите, что пытаетесь определить два корневых элемента:

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). Либо сделайте 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)
    )));
4
Sergey Berezovskiy 24 Янв 2014 в 11:26