.NET XmlSerializer を使用して文字列を CDATA として出力する
.NET XmlSerializer
は、属性を使用した 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>
シリアル化の例:
<code class="language-csharp">// Create a MyClass instance MyClass mc = new MyClass(); mc.MyString = "<test>Hello World</test>"; // Create the XmlSerializer and serialize the object XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); StringWriter writer = new StringWriter(); serializer.Serialize(writer, mc); // Display the serialized XML Console.WriteLine(writer.ToString());</code>
期待される出力:
出力には、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>
このメソッドは、XmlSerializer
を使用して文字列を CDATA として効果的にシリアル化し、直接属性サポートの欠如を回避します。
以上が.NET XmlSerializer を使用して文字列を CDATA としてシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。