標準 .NET XmlSerializer
不直接將字串序列化為 XML 中的 CDATA 部分。 但是,可以實施自訂解決方案來實現此目的。 這涉及創建一個具有公共字串屬性和相應的 XmlCDataSection
屬性的類,該屬性用於序列化。
為了實現此目的,我們建立一個用 XmlIgnore
標記的屬性來保存字串值,並建立另一個用 XmlElement
裝飾的屬性,傳回 XmlCDataSection
。 XmlElement
屬性指定 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中文網其他相關文章!