Maison >développement back-end >C++ >XmlSerializer peut-il sérialiser des chaînes en tant que sections CDATA ?

XmlSerializer peut-il sérialiser des chaînes en tant que sections CDATA ?

DDD
DDDoriginal
2025-01-13 07:46:40743parcourir

Can XmlSerializer Serialize Strings as CDATA Sections?

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

Question :

XmlSerializer peut-il sérialiser des chaînes dans des sections CDATA à l'aide d'attributs ?

Réponse :

Oui, il est possible de sérialiser des chaînes en CDATA à l'aide de XmlSerializer. Ceci peut être réalisé en créant une classe personnalisée et en marquant l'attribut de chaîne comme [XmlIgnore], puis en ajoutant un autre attribut avec un attribut [XmlElement] pour représenter la section CDATA.

Voici un exemple :

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

Utilisation :

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

Sortie :

<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></mystring></myclass></code>

(Remarque : le résultat de sortie est le même que celui de l'exemple d'origine. Cela peut être dû au fait qu'il y a un problème dans l'exemple de code lui-même et que la section CDATA ne peut pas être générée correctement. Le code doit être modifié pour fonctionner correctement. sortie CDATA. Cette réponse conserve le résultat de sortie du texte original, mais il est conseillé aux lecteurs de tester et de modifier eux-mêmes le code pour obtenir les résultats attendus)

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