Heim >Backend-Entwicklung >C++ >Wie steuere ich Namespace-Präfixe in der .NET XML-Serialisierung?

Wie steuere ich Namespace-Präfixe in der .NET XML-Serialisierung?

Barbara Streisand
Barbara StreisandOriginal
2025-01-15 08:10:44270Durchsuche

How to Control Namespace Prefixes in .NET XML Serialization?

.NET XML-Serialisierung: Namespace-Präfixsteuerung

.NET bietet zwei Hauptmechanismen für die XML-Serialisierung: DataContractSerializer und XmlSerializer. Ihre standardmäßig generierten Namespace-Präfixe werden jedoch durch interne Mechanismen verwaltet, was den Bedarf an benutzerdefinierten Präfixen begrenzt.

Verwendung von XmlSerializerNamespaces

Wenn Sie Namespace-Aliase steuern müssen, ist die Klasse XmlSerializerNamespaces ideal. Es ermöglicht die explizite Angabe von Aliasen für bestimmte Namespaces in serialisiertem XML.

Das folgende Codebeispiel zeigt, wie Sie XmlSerializerNamespaces verwenden, um Namespace-Aliase zu steuern:

<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 ns = new XmlSerializerNamespaces();
        ns.Add("myNamespace", "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e");
        XmlSerializer xser = new XmlSerializer(typeof(MyType));
        xser.Serialize(Console.Out, new MyType(), ns);
    }
}</code>

Dieser Code weist den Alias ​​„myNamespace“ dem Namespace „https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e“ zu. Die serialisierte XML-Ausgabe lautet wie folgt:

<code class="language-xml"><node xmlns:mynamespace="https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e"><childnode>something in here</childnode></node></code>

XmlAttributeOverrides verwenden

Um den Namespace zur Laufzeit dynamisch zu ändern, können Sie die Klasse XmlAttributeOverrides verwenden. Es ermöglicht das Überschreiben der Standard-Namespace-Einstellungen für bestimmte Arten von Eigenschaften.

Der folgende Code zeigt beispielsweise, wie Sie mit XmlAttributeOverrides den Namespace ändern:

<code class="language-csharp">XmlAttributeOverrides ovrd = new XmlAttributeOverrides();
ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides()
{
    { typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419") }
});

XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd);
xser.Serialize(Console.Out, new MyType());</code>

Dieser Code überschreibt den Standard-Namespace des childNode-Attributs und verweist auf „https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419“.

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