如何使用Linq向XML添加顶级元素

时间:2010-11-10 23:24:03

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

假设我有一个名为xd的xdocument,已经创建了以下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 :(得分:0)

您想要的XML结构无效;您需要一个根元素才能添加另一个“警报”节点。以下代码显示了在根节点存在时如何添加它:

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解析它,类似于我在上面显示的内容。