Maison > développement back-end > C++ > Comment puis-je sérialiser une chaîne en tant que CDATA à l'aide de XmlSerializer de .NET ?

Comment puis-je sérialiser une chaîne en tant que CDATA à l'aide de XmlSerializer de .NET ?

Linda Hamilton
Libérer: 2025-01-13 10:30:44
original
227 Les gens l'ont consulté

How Can I Serialize a String as CDATA Using .NET's XmlSerializer?

Une solution intelligente au manque d'attributs CDATA dans .NET XmlSerializer

Le XmlSerializer du framework .NET fournit une fonction puissante pour sérialiser des objets dans des documents XML. Cependant, il lui manque un attribut direct pour spécifier la sérialisation de la chaîne vers CDATA.

Une solution créative

Pour contourner cette limitation, nous pouvons utiliser une solution de contournement intelligente. En implémentant une propriété personnalisée qui encapsule le comportement CDATA souhaité, nous pouvons obtenir l'effet souhaité.

<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 cet attribut personnalisé :

  • MyString : Représente la chaîne réelle à sérialiser.
  • MyStringCDATA : Implémente les méthodes getter et setter pour convertir une chaîne en CDATA et vice versa.

Utilisation :

Pour utiliser cette solution il suffit de :

<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

Ce code générera la sortie XML attendue, où la chaîne est contenue dans CDATA :

<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[<test>Hello World</test>]]></mystring></myclass></code>
Copier après la connexion

(Remarque : l'exemple XML de sortie peut différer légèrement de l'original, en fonction de la version .NET et des paramètres de sérialisation. L'essentiel est que l'attribut MyStringCDATA encapsule avec succès la chaîne dans une section CDATA.)

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