Entfernen von leeren xmlns="" nach der Xml-Serialisierung

So, ich bin immer noch Fragen zu diesem Thema 🙁

Also ich erstelle ein Objekt, dekorieren es mit der Xml-Serialisierung Attribute, von dem, was ich gesehen habe, füge ich eine leere namespace in den xml-Serialisierung namepsace Sammlungen, so dass nicht zu bekommen, die überflüssige Attribute ich habe nicht die Absicht zu haben.

Edit: Das Attribut ich meine, sind 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 zusätzliche Attribute.

Nach einer weiteren Untersuchung, wenn ich den Anfang des Dokuments aus:**

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

zu

writer.WriteStartElement("urlset");

**Dann bekomme ich nicht den leeren xmlns="" - Attribut in die url-tags. Das ist großartig, ABER ich verlangen, dass das root-element haben 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 eine leere xmlns="" Attribut in der serialisierte 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 verwende ich den folgenden Anhängen, um meine XmlWriter:

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 bin Links mit eine leere xmlns="" wie diese

<url xmlns="">

Jemand irgendwelche Ideen? Wieder kann ich erreichen, dies mit Hilfe der XmlTextWriter-und die XmlDocument-aber ich brauche, um es zu erreichen, mit dem XmlWriter.

Jede Hilfe wird sehr geschätzt.

  • > ich fügen Sie einen leeren namespace in den xml-Serialisierung namepsace Sammlungen, so dass nicht zu bekommen, die überflüssige Attribute ich habe nicht die Absicht zu haben. Können Sie dies erläutern? Was meinst du mit überflüssigen Attributen?
  • <url xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema"; xmlns=""> So gibt es mir zwei zusätzliche Attribute.
InformationsquelleAutor REA_ANDREW | 2009-03-05
Schreibe einen Kommentar