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.
See Question&Answers more detail:
os