Maison > développement back-end > C++ > .NET XmlSerializer peut-il sérialiser des chaînes sous forme de CDATA à l'aide d'attributs ?

.NET XmlSerializer peut-il sérialiser des chaînes sous forme de CDATA à l'aide d'attributs ?

Susan Sarandon
Libérer: 2025-01-13 08:14:43
original
959 Les gens l'ont consulté

Can .NET XmlSerializer Serialize Strings as CDATA Using Attributes?

Utilisez XmlSerializer pour sérialiser la chaîne en CDATA

XmlSerializer pour .NET permet-il de sérialiser des chaînes vers CDATA à l'aide d'attributs ?

Solution :

La classe XmlSerializer de .NET n'autorise pas directement la sérialisation CDATA à l'aide de propriétés. Toutefois, vous pouvez utiliser une combinaison de propriétés XmlIgnore et de propriétés personnalisées pour obtenir les résultats souhaités.

Voici un exemple de classe qui démontre cette approche :

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

    [XmlIgnore]
    public string MyString { get; set; }

    [XmlElement("MyString")]
    public System.Xml.XmlCDataSection MyStringCDATA
    {
        get
        {
            return new System.Xml.XmlDocument().CreateCDataSection(MyString);
        }
        set
        {
            MyString = value.Value;
        }
    }
}</code>
Copier après la connexion

Dans cette classe personnalisée, utilisez l'attribut XmlIgnore pour exclure la propriété MyString de la sérialisation. Au lieu de cela, une nouvelle propriété MyStringCDATA est définie, qui renvoie un objet System.Xml.XmlCDataSection qui encapsule la chaîne requise. Cela permet la sérialisation CDATA sans avoir besoin d'attributs supplémentaires.

Utilisation :

Pour utiliser cette méthode, vous créez une instance MyClass, définissez la propriété MyString, puis la sérialisez à l'aide de XmlSerializer :

<code class="language-csharp">MyClass mc = new MyClass();
mc.MyString = "<test>Hello World</test>";
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, mc);
Console.WriteLine(writer.ToString());</code>
Copier après la connexion

Sortie :

Cela produira la sortie XML suivante :

<code class="language-xml"><?xml version="1.0" encoding="utf-16"?><myclass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><mystring><![CDATA[Hello World]]></mystring></myclass></code>
Copier après la connexion

Notez que la valeur MyString est enveloppée dans une section CDATA comme prévu.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal