I have an XDocument object which contains XHTML and I am looking to add ABBR elements into the string. I have a List that I am looping through to look for values which need to be wrapped in ABBR elements.

Lets say I have an XElement which contains XHTML like so:

```
<p>Some text will go here</p>

```

I need to adjust the value of the XElement to look like this:

```
<p>Some text <abbr title="Will Description">will</abbr> go here</p>

```

How do I do this?

UPDATE:

I am wrapping the value "will" with the HTML element ABBR.

This is what I have so far:

```
        // Loop through them
        foreach (XElement xhtmlElement in allElements)
        {
            // Don't process this element if it has child elements as they
            // will also be processed through here.
            if (!xhtmlElement.Elements().Any())
            {
                string innerText = GetInnerText(xhtmlElement);

                foreach (var abbrItem in AbbreviationItems)
                {
                    if (innerText.ToLower().Contains(abbrItem.Description.ToLower()))
                    {
                        var abbrElement = new XElement("abbr", 
                            new XAttribute("title", abbrItem.Abbreviation),
                            abbrItem.Description);

                        innerText = Regex.Replace(innerText, abbrItem.Description, abbrElement.ToString(),
                                                  RegexOptions.IgnoreCase);

                        xhtmlElement.Value = innerText;
                    }
                }
            }
        }

```

The problem with this approach is that when I set the XElement Value property, it is encoding the XML tags (correctly treating it as a string rather than XML).