Remove empty xmlns = "" después de la serialización Xml

Así que todavía estoy haciendo preguntas sobre este tema: -

Así que creo un objeto, lo decoro con los Atributos de serialización Xml, por lo que he visto, agrego un espacio de nombres vacío a las colecciones de nombres de serialización xml para no obtener los atributos superfluos que no pretendía tener.

Editar El atributo que quiero decir son estos:

<url xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns="">

so me da dos atributos adicionales.

Después de una investigación adicional si cambio el comienzo del documento de: **

writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");

writer.WriteStartElement("urlset");

** Entonces no obtengo el atributo xmlns = "" vacío en las etiquetas de URL. Esto es genial PERO sí requiero que el elemento raíz tengaxmlns="http://www.sitemaps.org/schemas/sitemap/0.9", es decir

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

Pero todavía recibo una @ vacxmlns="" atributo en el tipo serializado.

[XmlRoot(ElementName = "url", Namespace="")]
public class SitemapNode
{
    [XmlElement(ElementName = "loc")]
    public string Location { get; set; }
    [XmlElement(ElementName = "lastmod")]
    public DateTime LastModified { get; set; }
    [XmlElement(ElementName = "changefreq")]
    public SitemapChangeFrequency ChangeFrequency { get; set; }
    [XmlElement(ElementName = "priority")]
    public decimal Priority { get; set; }

    public SitemapNode()
    {
        Location = String.Empty;
        LastModified = DateTime.Now;
        ChangeFrequency = SitemapChangeFrequency.monthly;
        Priority = 0.5M;
    }

    public SitemapNode(string location, DateTime lastModified, SitemapChangeFrequency changeFrequency, decimal priority)
    {
        L,ocation = location;
        LastModified = lastModified;
        ChangeFrequency = changeFrequency;
        Priority = priority;
    }
}

Luego uso lo siguiente para agregar a mi XmlWriter:

foreach (uk.co.andrewrea.SitemapNode node in List)
{
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add(String.Empty, String.Empty);
    Serializer.Serialize(Writer, node, ns);
}

Esto funciona bien, excepto que me queda con un emtpy xmlns = "" como este

<url xmlns="">

¿Alguna idea? Nuevamente, puedo lograr esto usando XmlTextWriter y XmlDocument, pero necesito lograrlo usando XmlWriter.

Cualquier ayuda es muy apreciada

Respuestas a la pregunta(3)

Su respuesta a la pregunta