Maison >développement back-end >C++ >Comment sérialiser des chaînes en tant que CDATA à l'aide de XmlSerializer en C# ?

Comment sérialiser des chaînes en tant que CDATA à l'aide de XmlSerializer en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-13 06:59:42243parcourir

How to Serialize Strings as CDATA Using XmlSerializer in C#?

Personnalisation de la sérialisation XML pour les chaînes CDATA en C#

Le standard .NET XmlSerializer ne gère pas directement la sérialisation des chaînes en tant que sections CDATA en XML. Cependant, une solution personnalisée peut être mise en œuvre pour y parvenir. Cela implique de créer une classe avec une propriété de chaîne publique et une propriété XmlCDataSection correspondante, qui est utilisée pour la sérialisation.

Pour ce faire, nous créons une propriété marquée de XmlIgnore pour contenir la valeur de chaîne et une autre propriété décorée de XmlElement qui renvoie un XmlCDataSection. L'attribut XmlElement spécifie le nom de l'élément XML et l'attribut XmlIgnore empêche la sérialisation directe de la propriété de chaîne.

Exemple de mise en œuvre :

<code class="language-csharp">[Serializable]
public class MyClass
{
    public MyClass() { }

    [XmlIgnore] // Prevents direct serialization
    public string MyStringProperty { get; set; }

    [XmlElement("MyString")] // Specifies the XML element name
    public System.Xml.XmlCDataSection MyStringCDATA
    {
        get
        {
            return new System.Xml.XmlDocument().CreateCDataSection(MyStringProperty);
        }
        set
        {
            MyStringProperty = value.Value;
        }
    }
}</code>

Exemple de sérialisation :

<code class="language-csharp">MyClass myObject = new MyClass();
myObject.MyStringProperty = "<test>Hello World!</test>";

XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, myObject);
Console.WriteLine(writer.ToString());</code>

Cet extrait de code montre comment utiliser la classe personnalisée pour sérialiser une chaîne en tant que section CDATA. Notez que le résultat variera en fonction du contenu de MyStringProperty. La propriété XmlCDataSection gère la conversion au format CDATA approprié lors de 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!

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