So I am still asking questions about this topic 🙁
So I create an object, decorate it with the Xml Serialization Attributes, from what I have seen I add an empty namespace to the xml serialization namepsace collections so as not to get the superfluous attributes I did not intend to have.
Edit: The attribute I mean are these:
<url xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'; xmlns:xsd='http://www.w3.org/2001/XMLSchema'; xmlns=''>
so it gives me two extra attributes.
After further investigation if I change the beginning of the document from:**
writer.WriteStartElement('urlset','http://www.sitemaps.org/schemas/sitemap/0.9');
to
writer.WriteStartElement('urlset');
**Then I do not get the empty xmlns=” attribute in the url tags. This is great BUT I do require that the root element have xmlns='http://www.sitemaps.org/schemas/sitemap/0.9', i.e.:
<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>
But I still get an empty xmlns='' attribute in the serialized type.
[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) { Location = location; LastModified = lastModified; ChangeFrequency = changeFrequency; Priority = priority; } }
Then I use the following to append to my XmlWriter:
foreach (uk.co.andrewrea.SitemapNode node in List) { XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add(String.Empty, String.Empty); Serializer.Serialize(Writer, node, ns); }
This works out fine except I am left with an emtpy xmlns=” like this
<url xmlns=''>
Anyone any ideas? Again I can achieve this using the XmlTextWriter and the XmlDocument but I need to achieve it using the XmlWriter.
Any help is greatly appreciated.
This works (you just need them to be in the same namespace and you use the namespaces class so the writter doesn’t confuse):
And the output is (based on your comments that is what you were looking for):