Heim >Backend-Entwicklung >C++ >Wie kann ich Namespace-Präfixe in der C#-XML-Serialisierung steuern?

Wie kann ich Namespace-Präfixe in der C#-XML-Serialisierung steuern?

Barbara Streisand
Barbara StreisandOriginal
2025-01-15 08:35:43384Durchsuche

How Can I Control Namespace Prefixes in C# XML Serialization?

Anpassen von Namespace-Präfixen in der C#-XML-Serialisierung

Entwickler müssen häufig die Namespace-Verarbeitung während der XML-Serialisierung in C# optimieren. Sowohl DataContractSerializer als auch XmlSerializer unterstützen Namespaces, aber ihre Standardpräfixzuweisungen erfüllen möglicherweise nicht immer bestimmte Projektanforderungen.

Namespace-Präfixe angeben

Die Klasse XmlSerializerNamespaces bietet eine Lösung zur Steuerung von Namespace-Präfixen. Mit dieser Klasse können Sie Präfixe explizit Namespace-URIs zuordnen. Hier ist eine Illustration:

<code class="language-csharp">[XmlRoot("Node", Namespace = "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e")]
public class MyType
{
    [XmlElement("childNode")]
    public string Value { get; set; }
}

static class Program
{
    static void Main()
    {
        XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
        namespaces.Add("myNamespace", "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e");
        XmlSerializer serializer = new XmlSerializer(typeof(MyType));
        serializer.Serialize(Console.Out, new MyType(), namespaces);
    }
}</code>

Dieser Code definiert MyType und gibt sein Stammelement und seinen Namensraum mithilfe von XML-Attributen an. Es wird eine XmlSerializerNamespaces-Instanz erstellt, die „myNamespace“ mit „https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e“ verknüpft. Durch die Übergabe an die Methode Serialize wird sichergestellt, dass der Serialisierer das benutzerdefinierte Präfix verwendet.

Laufzeit-Namespace-Änderung

Für Laufzeit-Namespace-Anpassungen bietet die Klasse XmlAttributeOverrides eine Möglichkeit, die Standard-XML-Attribute einer Klasse zu überschreiben. Im Folgenden werden dynamische Namensraumänderungen veranschaulicht:

<code class="language-csharp">XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(MyType), "Root", new XmlRootAttribute("Node") { Namespace = "https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6" });

XmlSerializer serializer = new XmlSerializer(typeof(MyType), overrides);
serializer.Serialize(Console.Out, new MyType(), namespaces);</code>

In diesem Beispiel wird XmlAttributeOverrides verwendet, um den Namespace von MyType zur Laufzeit vor der Serialisierung in „https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6“ zu ändern.

Das obige ist der detaillierte Inhalt vonWie kann ich Namespace-Präfixe in der C#-XML-Serialisierung steuern?. 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