Maison >développement back-end >C++ >Comment contrôler les préfixes d'espace de noms dans la sérialisation XML .NET ?

Comment contrôler les préfixes d'espace de noms dans la sérialisation XML .NET ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 08:10:44268parcourir

How to Control Namespace Prefixes in .NET XML Serialization?

Sérialisation XML .NET : contrôle du préfixe d'espace de noms

.NET fournit deux principaux mécanismes de sérialisation XML : DataContractSerializer et XmlSerializer. Cependant, leurs préfixes d'espace de noms générés par défaut sont gérés par des mécanismes internes, ce qui limite le besoin de préfixes personnalisés.

Utilisation des espaces de noms XmlSerializer

Si vous avez besoin de contrôler les alias d'espace de noms, la classe XmlSerializerNamespaces est idéale. Il permet de spécifier explicitement des alias pour des espaces de noms spécifiques en XML sérialisé.

L'exemple de code suivant montre comment utiliser XmlSerializerNamespaces pour contrôler les alias d'espace de noms :

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

Ce code attribue l'alias "myNamespace" à l'espace de noms "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e". La sortie XML sérialisée est la suivante :

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

Utiliser XmlAttributeOverrides

Pour modifier dynamiquement l'espace de noms au moment de l'exécution, vous pouvez utiliser la classe XmlAttributeOverrides. Il permet de remplacer les paramètres d'espace de noms par défaut pour des types spécifiques de propriétés.

Par exemple, le code suivant montre comment utiliser XmlAttributeOverrides pour modifier l'espace de noms :

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

Ce code remplace l'espace de noms par défaut de l'attribut childNode, en le pointant vers "https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419".

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn