How do I set namespace attributes on an XElement

.net, linq-to-xml, xml

Solution

It took scouring a lot of blogs but I finally came up with what I think is the "right" way to do this:

XNamespace ns = @"http://www.myapp.com/resource";
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance";

var root = new XElement(ns + "root", 
  new XAttribute(XNamespace.Xmlns+"xsi", xsi.NamespaceName),
  new XAttribute(xsi + "schemaLocation", @"http://www.myapp/resource TheResource.xsd")
);

Problem

I need to add the following attributes to an XElement: ``` <xmlns="http://www.mysite.com/myresource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mysite.com/myresource TheResource.xsd"> ``` Adding them as an XAttribute doesn't work because of the ":" and I'm sure is not the right way anyways. How do I add these on there?

Original source