Menggunakan .NET XmlSerializer untuk Output Rentetan sebagai CDATA
.NET XmlSerializer
tidak menyokong secara langsung rentetan bersiri sebagai CDATA menggunakan atribut. Walau bagaimanapun, penyelesaian tersuai menggunakan pengambil dan penetap boleh mencapai ini.
Berikut ialah kelas yang menunjukkan teknik ini:
<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>
Contoh Serialisasi:
<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>
Keluaran Jangkaan:
Output akan menunjukkan rentetan yang disertakan dalam bahagian 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>
Kaedah ini secara berkesan menyusun rentetan sebagai CDATA menggunakan XmlSerializer
, mengelakkan kekurangan sokongan atribut langsung.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Rentetan sebagai CDATA Menggunakan .NET XmlSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!