標準の .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 中国語 Web サイトの他の関連記事を参照してください。