Ich verwende den XmlWriter in Verbindung mit Xml Serialisierung. Ich bin in der Lage, die XML-Ausgabe auszugeben, aber wie das Xmlns-Attribut mit dem XmlWriter einzuschließen scheint, entgeht mir.Wie füge ich einen Namespace hinzu, während ich XmlSerialization mit einem XmlWriter mache?
Um den Start der ich folgendes verwenden Dokument zu schreiben:
Writer.WriteStartDocument();
Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
Mit meinem XmlWriter ich dann Schleife durch SitemapNodes erstellt Ich habe sie erstellt und schreibt sie auf die zugrunde liegende String durch Serialisierung wie folgt aus:
Wie ich sage, das funktioniert gut, aber der oben genannte Namespace für das Root-Element ist nicht enthalten. Jedes Mal, wenn ich versuche, das Attribut, xmlns, physikalisch zu schreiben, bekomme ich eine Ausnahme, dass die XMLNs vom System für XML-Nutzung reserviert ist, also kann ich im Grunde nicht verwenden.
Ich weiß, wie dies mit dem XmlTextWriter und auch mit der XmlDocument-Klasse, aber ich muss verstehen, wie ich dies mit dem XmlWriter und durch Serialisierung erreichen.
Der folgende Versuch löst auch die Ausnahme für diesen reservierten Namespace aus.
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
Serializer.Serialize(Writer, node, ns);
}
Exception Details: System.ArgumentException: Prefix "xmlns" is reserved for use by XML.
Verwenden Sie den Titel nicht wie ein Feld Tags. Etwas wie "Wie füge ich einen Namespace hinzu, während ich XmlSerialization mit einem XmlWriter mache?" – cjk