如何使用 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>
添加附加元素似乎相当容易,但在添加顶级元素时则例外。
Assuming I have a xdocument called xd, with the following xml already created.
<Alert>
<Source>
<DetectTime>12:03:2010 12:22:21</DetectTime>
</Source>
</Alert>
How would I be able to add another Alert element, such that the xml becomes:
<Alert>
<Source>
<DetectTime>12:03:2010 12:22:21</DetectTime>
</Source>
</Alert>
<Alert>
</Alert>
Adding an additional elements seems to be fairly easy, but when adding in a top level element it excepts.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您想要的 XML 结构无效;您需要一个根元素才能添加另一个“警报”节点。以下代码显示了当根节点存在时如何添加它:
上面的代码会生成
因为没有子节点添加到它(一旦添加到它,这将会改变)。如果您想要如图所示的结束标记,可以使用 xdoc.Root.Add(new XElement("Alert", String.Empty)); 代替。要验证您所需的输出是否具有无效结构,您可以尝试使用类似于我上面所示的
XDocument.Parse
来解析它。Your desired XML structure is invalid; you need a root element in order to add another "Alert" node. The following code shows how to add it when a root node exists:
The above code produces
<Alert />
since no child nodes are added to it (this will change once you add to it). If you want the closing tag as you have shown you can usexdoc.Root.Add(new XElement("Alert", String.Empty));
instead.To verify that your desired output has an invalid structure you can try parsing it using
XDocument.Parse
similar to what I've shown above.