Add new XElement to an existing XElement if it doesn't already exist

.net, c#, linq-to-xml, xml

Solution

`XElement` has a `HasElements` property, which would work if just wanted to know whether any elements existed or not.

For your case, I would use...

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

..to see if a the price element exists. If not, you can then add it.

Note: if you don't have any namespace set for your XML file, you can use `Namespace.None` instead of `ns`.

Problem

How do I check to see if an element exists within a given element before trying to add it? Background: I have an `XDocument` `X` that contains as a child element `Flowers` which subsequently contains a series of elements that are each named `Flower`. Each `Flower` already has 2 child elements and I would like to add a 3rd element called `Price`. However, I want to check and make sure there's not already an element for `Price` within the `Flower` element. How do I do that? Do I even need to check?

Original source