title: Add XML Namespace attribute to 3rd party xml?
body: <p>I'm using VB 2008 and I'm trying to add a xmlns="mynamespace" attribute to an XDocument's root element.</p>
  
  <p>The XML document is created by a 3rd party, and I have loaded it into a VB XDocument object. As it comes, it has no namespaces. I have been working on a local copy and I added in a namespace in a text editor, so that I can use the XMLToSchema in VB to enable intellisense etc, as per the instructions in the Beth Massi vids at <a href="http://msdn.microsoft.com/en-us/vbasic/bb887653.aspx" rel="nofollow noreferrer">MSDN</a>. Now the rest of the code works I want to open the live documents again. Without the namespace, my XML literals don't resolve.</p>
  
  <p>I've tried unsuccessfully to add in the XMLNS property to the root tag using a few methods, and the nearest I got was the following three code samples.</p>
  
  <pre><code>Dim myNS As XNamespace = "urn:nbf:namespacename"
  myXML.Element("nameofrootelement").Add(myNS)
  </code></pre>
  
  <p>^^^^ The namespace was added as the value of the root element, not as an attribute.</p>
  
  <pre><code>XML.Root.Add(New XAttribute("xmlns", "name"))
  </code></pre>
  
  <p>^^^^ Generated the error: Run-time exception thrown : System.Xml.XmlException - The prefix '' cannot be redefined from '' to 'name' within the same start element tag.</p>
  
  <p>but </p>
  
  <pre><code>XML.Root.Add(New XAttribute("test", "name"))
  </code></pre>
  
  <p>^^^^ works correctly. Presumably it doesn't like me manually trying to set a reserved attribute? This namespacing seems way too over complex from some of the Googling I've done.</p>
  
  <p>How do I get around this problem? :D</p>
  
  <p>Thanks!</p>
  
  <hr>
  
  <p><strong>Update</strong></p>
  
  <p>Thanks Anthony.</p>
  
  <p>I think I need to get a better understanding of the namespaces. </p>
  
  <p>I thought to .<code>ToString</code> it, then modify, then .<code>Parse</code> it also, but I wanted a better solution so that it would help me understand it a little better! I did try this though, and as you rightly point out, it affects all the descendants too, so thus it still breaks.</p>
  
  <p>I will be working with multiple XML feeds all produced by different third parties, and I think for simplicity I will be leaving out the namespacing entirely!</p>
  
  <p>My own custom parsing function rewrites the third party feeds into one uniformed document, which then gets processed by another routine. I'll be able to add a ns to that intermediate piece of XML which will help when coding the secondary function.</p>
  
  <p>Thanks!</p>