首頁 >後端開發 >C++ >如何在 C# 中使用 XmlSerializer 將字串序列化為 CDATA?

如何在 C# 中使用 XmlSerializer 將字串序列化為 CDATA?

Barbara Streisand
Barbara Streisand原創
2025-01-13 06:59:42261瀏覽

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

在 C# 中自訂 CDATA 字串的 XML 序列化

標準 .NET XmlSerializer 不直接將字串序列化為 XML 中的 CDATA 部分。 但是,可以實施自訂解決方案來實現此目的。 這涉及創建一個具有公共字串屬性和相應的 XmlCDataSection 屬性的類,該屬性用於序列化。

為了實現此目的,我們建立一個用 XmlIgnore 標記的屬性來保存字串值,並建立另一個用 XmlElement 裝飾的屬性,傳回 XmlCDataSectionXmlElement 屬性指定 XML 元素名稱,XmlIgnore 屬性防止字串屬性的直接序列化。

範例實作:

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

序列化範例:

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

此程式碼片段示範如何使用自訂類別將字串序列化為 CDATA 部分。 請注意,輸出將根據 MyStringProperty 的內容而變化。 XmlCDataSection 屬性處理序列化期間到適當 CDATA 格式的轉換。

以上是如何在 C# 中使用 XmlSerializer 將字串序列化為 CDATA?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn