.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!