代码之家  ›  专栏  ›  技术社区  ›  scope_creep

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

  •  0
  • scope_creep  · 技术社区  · 15 年前

    假设我有一个名为xd的xdocument,已经创建了以下xml。

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

    我如何才能添加另一个警报元素,使xml变成:

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

    添加一个额外的元素看起来相当容易,但是当添加一个顶级元素时就例外了。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Ahmad Mageed    15 年前

    所需的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 类似于我上面所展示的。

    推荐文章