Heim >Backend-Entwicklung >C++ >Wie serialisiere ich Strings als CDATA mit XmlSerializer in C#?

Wie serialisiere ich Strings als CDATA mit XmlSerializer in C#?

Barbara Streisand
Barbara StreisandOriginal
2025-01-13 06:59:42199Durchsuche

How to Serialize Strings as CDATA Using XmlSerializer in C#?

Anpassen der XML-Serialisierung für CDATA-Strings in C#

Der Standard .NET XmlSerializer verarbeitet Serialisierungszeichenfolgen nicht direkt als CDATA-Abschnitte in XML. Um dies zu erreichen, kann jedoch eine maßgeschneiderte Lösung implementiert werden. Dazu gehört das Erstellen einer Klasse mit einer öffentlichen String-Eigenschaft und einer entsprechenden XmlCDataSection-Eigenschaft, die für die Serialisierung verwendet wird.

Um dies zu erreichen, erstellen wir eine mit XmlIgnore gekennzeichnete Eigenschaft, die den Zeichenfolgenwert enthält, und eine weitere mit XmlElement dekorierte Eigenschaft, die ein XmlCDataSection zurückgibt. Das XmlElement-Attribut gibt den XML-Elementnamen an und das XmlIgnore-Attribut verhindert die direkte Serialisierung der String-Eigenschaft.

Beispielimplementierung:

<code class="language-csharp">[Serializable]
public class MyClass
{
    public MyClass() { }

    [XmlIgnore] // Prevents direct serialization
    public string MyStringProperty { get; set; }

    [XmlElement("MyString")] // Specifies the XML element name
    public System.Xml.XmlCDataSection MyStringCDATA
    {
        get
        {
            return new System.Xml.XmlDocument().CreateCDataSection(MyStringProperty);
        }
        set
        {
            MyStringProperty = value.Value;
        }
    }
}</code>

Serialisierungsbeispiel:

<code class="language-csharp">MyClass myObject = new MyClass();
myObject.MyStringProperty = "<test>Hello World!</test>";

XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, myObject);
Console.WriteLine(writer.ToString());</code>

Dieser Codeausschnitt zeigt, wie Sie die benutzerdefinierte Klasse verwenden, um eine Zeichenfolge als CDATA-Abschnitt zu serialisieren. Beachten Sie, dass die Ausgabe je nach Inhalt von MyStringProperty variieren kann. Die XmlCDataSection-Eigenschaft übernimmt die Konvertierung in das entsprechende CDATA-Format während der Serialisierung.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich Strings als CDATA mit XmlSerializer in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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