ホームページ >バックエンド開発 >C++ >C# で XmlSerializer を使用して文字列を CDATA としてシリアル化する方法

C# で XmlSerializer を使用して文字列を CDATA としてシリアル化する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-13 06:59:42243ブラウズ

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

C# での CDATA 文字列の XML シリアル化のカスタマイズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。