ホームページ >バックエンド開発 >C++ >.NET の XmlSerializer を使用して文字列を CDATA としてシリアル化するにはどうすればよいですか?

.NET の XmlSerializer を使用して文字列を CDATA としてシリアル化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-13 10:30:44229ブラウズ

How Can I Serialize a String as CDATA Using .NET's XmlSerializer?

.NET XmlSerializer の CDATA 属性の欠如に対する賢明な解決策

.NET Framework の XmlSerializer は、オブジェクトを XML ドキュメントにシリアル化するための強力な機能を提供します。ただし、CDATA への文字列のシリアル化を指定する直接属性がありません。

創造的なソリューション

この制限を回避するには、賢い回避策を使用できます。目的の CDATA 動作をカプセル化するカスタム プロパティを実装することで、目的の効果を実現できます。

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

このカスタム属性:

  • MyString: シリアル化される実際の文字列を表します。
  • MyStringCDATA: 文字列を CDATA に、またはその逆に変換するためのゲッター メソッドとセッター メソッドを実装します。

使用法:

このソリューションを使用するには:

<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 出力を生成します。文字列は CDATA に含まれます:

<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[<test>Hello World</test>]]></mystring></myclass></code>

(注: .NET のバージョンとシリアル化設定に応じて、出力 XML の例は元のサンプルと若干異なる場合があります。重要なのは、MyStringCDATA 属性が CDATA セクション内の文字列を正常にカプセル化していることです。)

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

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