"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment contrôler les préfixes de l'espace de noms dans .NET XML Serialization?

Comment contrôler les préfixes de l'espace de noms dans .NET XML Serialization?

Publié le 2025-04-16
Parcourir:132

How to Control Namespace Prefixes in .NET XML Serialization?

. Net xml serialization: nom de préfixe de noms de noms

. Net fournit deux mécanismes de sérialisation XML principaux: dataContractSerializer et xmlSerializer . Cependant, les préfixes d'espace de noms qu'ils génèrent par défaut sont gérés par des mécanismes internes, ce qui limite le besoin de préfixes personnalisés.

Utilisez xmlSerializernAmespaces

Si vous avez besoin de contrôler l'alias de l'espace de noms, la classe xmlSerializernAmespaces est idéale. Il permet de spécifier explicitement des alias pour un espace de noms spécifique dans le XML sérialisé.

L'exemple de code suivant montre comment contrôler l'alias de l'espace de noms à l'aide de xmlSerializernAmespaces :

[XmlRoot("Node", Namespace = "http://flibble")]
public class MyType
{
    [XmlElement("childNode")]
    public string Value { get; set; }
}

static class Program
{
    static void Main()
    {
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("myNamespace", "http://flibble");
        XmlSerializer xser = new XmlSerializer(typeof(MyType));
        xser.Serialize(Console.Out, new MyType(), ns);
    }
}

Ce code attribue l'alias "myNamespace" au " http: // flibble " namespace. La sortie XML sérialisée est la suivante:

something in here

Utilisez xmlattributeOverrides

Le runtime

modifie dynamiquement l'espace de noms et vous pouvez utiliser la classe xmlattributeOverrides . Il permet de remplacer les paramètres d'espace de noms par défaut pour les propriétés d'un type spécifique.

Par exemple, le code suivant montre comment modifier l'espace de noms à l'aide de xmlattributeOverrides :

XmlAttributeOverrides ovrd = new XmlAttributeOverrides();
ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides()
{
    { typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "http://alternateNamespace") }
});

XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd);
xser.Serialize(Console.Out, new MyType());

Ce code remplace l'espace de noms par défaut de la propriété childNode , le pointant vers " http: // alternatenamespace ".

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3