The “more correct way” would be:
XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "true"),
new XElement(ns + "urlset",
new XElement(ns + "url",
new XElement(ns + "loc", "http://www.example.com/page"),
new XElement(ns + "lastmod", "2008-09-14"))));
Same as your code, but with the “ns +” before every element name that needs to be in the sitemap namespace. It’s smart enough not to put any unnecessary namespace declarations in the resulting XML, so the result is:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/page</loc>
<lastmod>2008-09-14</lastmod>
</url>
</urlset>
which is, if I’m not mistaken, what you want.