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!