Personnalisation des préfixes d'espace de noms dans la sérialisation XML C#
Les développeurs doivent souvent affiner la gestion des espaces de noms lors de la sérialisation XML en C#. DataContractSerializer
et XmlSerializer
prennent en charge les espaces de noms, mais leurs attributions de préfixes par défaut peuvent ne pas toujours répondre aux besoins spécifiques du projet.
Spécification des préfixes d'espace de noms
La classe XmlSerializerNamespaces
fournit une solution pour contrôler les préfixes d'espace de noms. Cette classe vous permet de mapper explicitement des préfixes aux URI d’espace de noms. Voici une 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>
Ce code définit MyType
, en spécifiant son élément racine et son espace de noms à l'aide d'attributs XML. Une instance XmlSerializerNamespaces
est créée, associant "myNamespace" à "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e". En transmettant cela à la méthode Serialize
, vous garantissez que le sérialiseur utilise le préfixe personnalisé.
Modification de l'espace de noms d'exécution
Pour les ajustements de l'espace de noms d'exécution, la classe XmlAttributeOverrides
offre un moyen de remplacer les attributs XML par défaut d'une classe. Ce qui suit montre les modifications dynamiques de l'espace de noms :
<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>
Cet exemple utilise XmlAttributeOverrides
pour modifier l'espace de noms de MyType
au moment de l'exécution en "https://www.php.cn/link/7cf68b210274ef46d38b0cd76e059af6" avant la sérialisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!