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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das funktioniert (Sie brauchen nur Sie in der gleichen namespace und verwenden Sie die namespaces, class, damit die writter nicht verwechseln):
Und die Ausgabe ist (basierend auf Ihren Kommentaren, dass ist das, was Sie suchen):
Ich hatte Probleme beim einfügen eines Knotens in eine bestehende Dokument mit mehreren Namensräumen.
Egal was ich einstelle der Namensraum würde es das xmlns-Referenz-Attribut, jedes mal, egal was. Dies war, etwas zu beschädigen schwarz boxed downstream.
Schließlich bekam ich rund um diese durch etwas wie das zu tun.
Haben Sie versucht, keine Angabe des Namensraums in Ihrer XmlRoot-Attribut?
I. e.: