Heim >Backend-Entwicklung >C++ >Wie kann ich Namespace-Deklarationen beim Serialisieren von XML in .NET anpassen?

Wie kann ich Namespace-Deklarationen beim Serialisieren von XML in .NET anpassen?

DDD
DDDOriginal
2025-01-01 12:08:12514Durchsuche

How to Customize Namespace Declarations When Serializing XML in .NET?

Anpassen von Namespace-Deklarationen für serialisiertes XML in .NET

Die Herausforderung entsteht, wenn versucht wird, Objekte zu serialisieren, ohne übermäßige XML-Namespace-Deklarationen wie xsi und xsd zu generieren. Standardmäßig fügen Serialisierungsprozesse diese Namespaces in das resultierende XML-Dokument ein.

Betrachten Sie den folgenden Codeausschnitt, der das Problem veranschaulicht:

StringBuilder builder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
using (XmlWriter xmlWriter = XmlWriter.Create(builder, settings))
{
    XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
    s.Serialize(xmlWriter, objectToSerialize);
}

Das resultierende XML-Dokument enthält Namespace-Deklarationen:

<message xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" 
    xmlns="urn:something">
 ...
</message>

Um diese unnötigen Namespace-Deklarationen zu vermeiden, ist es wichtig, einen benutzerdefinierten Namespace zu verwenden Objekte:

...
XmlSerializer s = new XmlSerializer(objectToSerialize.GetType());
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
s.Serialize(xmlWriter, objectToSerialize, ns);

Durch die Verwendung der XmlSerializerNamespaces-Klasse und das Hinzufügen einer leeren Zeichenfolge als Schlüssel und Wert ist es möglich, die Standard-Namespace-Deklarationen zu überschreiben und die gewünschte Ausgabe zu erzeugen:

<message>
 ...
</message>

Das obige ist der detaillierte Inhalt vonWie kann ich Namespace-Deklarationen beim Serialisieren von XML in .NET anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn