Heim > Backend-Entwicklung > C++ > Wie kann ich mit dem XmlSerializer von .NET einen String als CDATA serialisieren?

Wie kann ich mit dem XmlSerializer von .NET einen String als CDATA serialisieren?

Linda Hamilton
Freigeben: 2025-01-13 10:30:44
Original
227 Leute haben es durchsucht

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

Eine clevere Lösung für das Fehlen von CDATA-Attributen in .NET XmlSerializer

Der XmlSerializer im .NET Framework bietet eine leistungsstarke Funktion zum Serialisieren von Objekten in XML-Dokumente. Es fehlt jedoch ein direktes Attribut, um die Serialisierung der Zeichenfolge in CDATA anzugeben.

Eine kreative Lösung

Um diese Einschränkung zu umgehen, können wir einen cleveren Workaround verwenden. Durch die Implementierung einer benutzerdefinierten Eigenschaft, die das gewünschte CDATA-Verhalten kapselt, können wir den gewünschten Effekt erzielen.

<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>
Nach dem Login kopieren

In diesem benutzerdefinierten Attribut:

  • MyString: Stellt die tatsächliche Zeichenfolge dar, die serialisiert werden soll.
  • MyStringCDATA: Implementiert Getter- und Setter-Methoden zum Konvertieren von Zeichenfolgen in CDATA und umgekehrt.

Verwendung:

Um diese Lösung zu verwenden, gehen Sie einfach wie folgt vor:

<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>
Nach dem Login kopieren

Dieser Code generiert die erwartete XML-Ausgabe, wobei die Zeichenfolge in CDATA enthalten ist:

<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>
Nach dem Login kopieren

(Hinweis: Das Ausgabe-XML-Beispiel kann je nach .NET-Version und Serialisierungseinstellungen geringfügig vom Original abweichen. Der Schlüssel liegt darin, dass das MyStringCDATA-Attribut die Zeichenfolge erfolgreich in einem CDATA-Abschnitt kapselt.)

Das obige ist der detaillierte Inhalt vonWie kann ich mit dem XmlSerializer von .NET einen String als CDATA serialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage