Heim > Backend-Entwicklung > C++ > Kann .NET XmlSerializer Zeichenfolgen mithilfe von Attributen als CDATA serialisieren?

Kann .NET XmlSerializer Zeichenfolgen mithilfe von Attributen als CDATA serialisieren?

Susan Sarandon
Freigeben: 2025-01-13 08:14:43
Original
962 Leute haben es durchsucht

Can .NET XmlSerializer Serialize Strings as CDATA Using Attributes?

Verwenden Sie XmlSerializer, um Zeichenfolgen in CDATA zu serialisieren

Ermöglicht XmlSerializer für .NET die Serialisierung von Zeichenfolgen in CDATA mithilfe von Attributen?

Lösung:

Die XmlSerializer-Klasse von .NET ermöglicht keine direkte CDATA-Serialisierung mithilfe von Eigenschaften. Sie können jedoch eine Kombination aus XmlIgnore-Eigenschaften und benutzerdefinierten Eigenschaften verwenden, um die gewünschten Ergebnisse zu erzielen.

Hier ist eine Beispielklasse, die diesen Ansatz demonstriert:

<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 dieser benutzerdefinierten Klasse verwenden Sie das XmlIgnore-Attribut, um die MyString-Eigenschaft von der Serialisierung auszuschließen. Stattdessen wird eine neue MyStringCDATA-Eigenschaft definiert, die ein System.Xml.XmlCDataSection-Objekt zurückgibt, das die erforderliche Zeichenfolge kapselt. Dies ermöglicht die CDATA-Serialisierung, ohne dass zusätzliche Attribute erforderlich sind.

Verwendung:

Um diese Methode zu verwenden, erstellen Sie eine MyClass-Instanz, legen die MyString-Eigenschaft fest und serialisieren sie dann mit 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>
Nach dem Login kopieren

Ausgabe:

Dadurch wird die folgende XML-Ausgabe erzeugt:

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

Beachten Sie, dass der MyString-Wert wie erwartet in einen CDATA-Abschnitt eingeschlossen ist.

Das obige ist der detaillierte Inhalt vonKann .NET XmlSerializer Zeichenfolgen mithilfe von Attributen 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