Also von Ich bin immer noch Fragen zu diesem Thema :-(leer Xmlns entfernen = „“ nach XML-Serialisierung
So erstelle ich ein Objekt, dekorieren sie mit der XML-Serialisierung Attribute zu fragen, was ich ich ein Add gesehen haben leerer Namensraum in den xML-Serialisierung namepsace Sammlungen, um nicht die überflüssigen Attribute zu bekommen ich habe nicht die Absicht zu haben,
Edit:. Das Attribut ich meine, ist diese:
<url xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns="">
so gibt es mir zwei extra Attribute.
Nach einer weiteren Untersuchung, ob ich ändern Sie den Anfang des Dokuments aus: **
writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
zu
writer.WriteStartElement("urlset");
** Dann bekomme ich nicht die leeren xmlns = "" Attribut in der URL-Tags Das ist toll, aber ich verlangen, dass das Wurzelelement hat xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
, d.h .:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
Aber ich bekomme immer noch ein leeres xmlns=""
Attribut in dem serialisierten Typ.
[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;
}
}
Dann benutze ich folgendes meine XmlWriter anhängen:
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
Serializer.Serialize(Writer, node, ns);
}
Dies funktioniert gut, außer ich mit einem emtpy xmlns = "" wie dieses
<url xmlns="">
Wer bin übrig geblieben irgendwelche Ideen? Wieder kann ich dies mit dem XmlTextWriter und dem XmlDocument erreichen, aber ich muss es mit dem XmlWriter erreichen.
Jede Hilfe wird sehr geschätzt.
> Ich füge einen leeren Namespace zu den XML-Serialisierungsnamenpacesammlungen hinzu, um nicht die überflüssigen Attribute zu erhalten, die ich nicht haben wollte. Können Sie näher darauf eingehen? Was meinst du mit überflüssigen Attributen? – jro