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
Linda Hamiltonoriginal
2025-01-13 10:30:44275parcourir

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>

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>

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>

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

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