Как добавить элемент верхнего уровня с помощью Linq в XML - PullRequest
0 голосов
/ 11 ноября 2010

Предполагается, что у меня есть xdocument с именем xd, с уже созданным следующим xml.

<Alert>
  <Source>
    <DetectTime>12:03:2010 12:22:21</DetectTime>
  </Source>
</Alert>

Как бы я мог добавить еще один элемент Alert, чтобы xml стал:

<Alert>
  <Source>
    <DetectTime>12:03:2010 12:22:21</DetectTime>
  </Source>
</Alert>
<Alert>
</Alert>

Добавление дополнительных элементов кажется довольно простым, но при добавлении в элемент верхнего уровня это исключает.

1 Ответ

0 голосов
/ 11 ноября 2010

Ваша желаемая структура XML недействительна;вам нужен корневой элемент, чтобы добавить еще один узел "Alert".В следующем коде показано, как добавить его при наличии корневого узла:

var xdoc = XDocument.Parse(@"<root>
    <Alert>
    <Source>
        <DetectTime>12:03:2010 12:22:21</DetectTime>
    </Source>
    </Alert>
</root>");
xdoc.Root.Add(new XElement("Alert"));
Console.WriteLine(xdoc);

Приведенный выше код создает <Alert />, поскольку к нему не добавляются дочерние узлы (это изменится после добавления в него).Если вам нужен закрывающий тег, как вы показали, вы можете использовать xdoc.Root.Add(new XElement("Alert", String.Empty));.

Чтобы убедиться, что ваш желаемый вывод имеет недопустимую структуру, вы можете попробовать его проанализировать, используя XDocument.Parse, аналогично тому, что я показалвыше.

...