【问题标题】:Add new XElement to an existing XElement if it doesn't already exist如果现有 XElement 尚不存在,则将新 XElement 添加到现有 XElement
【发布时间】:2010-01-30 03:46:05
【问题描述】:

如何在尝试添加之前检查给定元素中是否存在某个元素?

背景:我有一个XDocumentX,它包含一个子元素Flowers,它随后包含一系列元素,每个元素都命名为Flower。每个 Flower 已经有 2 个子元素,我想添加一个名为 Price 的第三个元素。但是,我想检查并确保在 Flower 元素中还没有 Price 的元素。我怎么做?我还需要检查吗?

【问题讨论】:

    标签: c# .net xml linq-to-xml


    【解决方案1】:

    XElement 有一个 HasElements 属性,如果只是想知道是否存在任何元素,它会起作用。

    对于你的情况,我会使用...

    XNamespace ns = "http://mynamespace.com";
    bool hasPrice = flowerElement.Element(ns + "Price") == null;
    

    ..查看价格元素是否存在。如果没有,您可以添加它。

    注意:如果您没有为 XML 文件设置任何命名空间,则可以使用 Namespace.None 代替 ns

    【讨论】:

    • 对,但每个 Flower 元素已经有 2 个子元素。我正在尝试查看名为 Price 的元素是否已经作为子元素存在。我怎样才能在不引发异常的情况下做到这一点?
    • @Ben,我进一步编辑了我的答案。这不应该引发异常。
    • @Ben,nsPrice 元素的 XML 命名空间。它通常只是默认命名空间。我将添加一个示例,说明如何将ns 设置为我的答案。
    • XNamespace 是否会在此处重载加号运算符??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多