ホームページ > バックエンド開発 > C++ > .NET XmlSerializer は属性を使用して文字列を CDATA としてシリアル化できますか?

.NET XmlSerializer は属性を使用して文字列を CDATA としてシリアル化できますか?

Susan Sarandon
リリース: 2025-01-13 08:14:43
オリジナル
962 人が閲覧しました

Can .NET XmlSerializer Serialize Strings as CDATA Using Attributes?

XmlSerializer を使用して文字列を CDATA にシリアル化します

XmlSerializer for .NET では、属性を使用して文字列を CDATA にシリアル化できますか?

解決策:

.NET の XmlSerializer クラスでは、プロパティを使用した CDATA シリアル化を直接許可しません。ただし、XmlIgnore プロパティとカスタム プロパティを組み合わせて使用​​すると、目的の結果を得ることができます。

このアプローチを示すクラスの例を次に示します。

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

    [XmlIgnore]
    public string MyString { get; set; }

    [XmlElement("MyString")]
    public System.Xml.XmlCDataSection MyStringCDATA
    {
        get
        {
            return new System.Xml.XmlDocument().CreateCDataSection(MyString);
        }
        set
        {
            MyString = value.Value;
        }
    }
}</code>
ログイン後にコピー

このカスタム クラスでは、XmlIgnore 属性を使用して、MyString プロパティをシリアル化から除外します。代わりに、新しい MyStringCDATA プロパティが定義され、必要な文字列をカプセル化する System.Xml.XmlCDataSection オブジェクトが返されます。これにより、追加の属性を必要とせずに CDATA のシリアル化が可能になります。

使用法:

このメソッドを使用するには、MyClass インスタンスを作成し、MyString プロパティを設定して、XmlSerializer を使用してシリアル化します。

<code class="language-csharp">MyClass mc = new MyClass();
mc.MyString = "<test>Hello World</test>";
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, mc);
Console.WriteLine(writer.ToString());</code>
ログイン後にコピー

出力:

これにより、次の XML 出力が生成されます:

<code class="language-xml"><?xml version="1.0" encoding="utf-16"?><myclass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><mystring><![CDATA[Hello World]]></mystring></myclass></code>
ログイン後にコピー

MyString 値は予想どおり CDATA セクションにラップされていることに注意してください。

以上が.NET XmlSerializer は属性を使用して文字列を CDATA としてシリアル化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート