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

XmlSerializer は文字列を CDATA セクションとしてシリアル化できますか?

DDD
DDDオリジナル
2025-01-13 07:46:40743ブラウズ

Can XmlSerializer Serialize Strings as CDATA Sections?

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

質問:

XmlSerializer は属性を使用して文字列を CDATA セクションにシリアル化できますか?

答え:

はい、XmlSerializer を使用して文字列を CDATA にシリアル化することができます。これを実現するには、カスタム クラスを作成し、文字列属性を [XmlIgnore] としてマークし、CDATA セクションを表す [XmlElement] 属性を持つ別の属性を追加します。

これは例です:

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

使用法:

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

出力:

<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></mystring></myclass></code>

(注: 出力結果は元の例と同じです。これは、サンプル コード自体に問題があり、CDATA セクションが正しく生成できないことが考えられます。コードを正しく修正する必要があります。 CDATA を出力します。この回答は元のテキストの出力結果を保持しますが、期待される結果を得るために読者はコードを自分でテストして変更することをお勧めします。)

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

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