Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mensiri Rentetan sebagai CDATA Menggunakan XmlSerializer .NET?

Bagaimanakah Saya Boleh Mensiri Rentetan sebagai CDATA Menggunakan XmlSerializer .NET?

Linda Hamilton
Linda Hamiltonasal
2025-01-13 10:30:44273semak imbas

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

Penyelesaian bijak untuk kekurangan atribut CDATA dalam .NET XmlSerializer

XmlSerializer dalam rangka kerja .NET menyediakan fungsi yang berkuasa untuk menyerikan objek ke dalam dokumen XML. Walau bagaimanapun, ia tidak mempunyai atribut langsung untuk menentukan siri rentetan kepada CDATA.

Penyelesaian kreatif

Untuk mengatasi had ini, kita boleh menggunakan penyelesaian yang bijak. Dengan melaksanakan sifat tersuai yang merangkumi tingkah laku CDATA yang diingini, kita boleh mencapai kesan yang diingini.

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

Dalam atribut tersuai ini:

  • MyString: Mewakili rentetan sebenar untuk disiri.
  • MyStringCDATA: Melaksanakan kaedah getter dan setter untuk menukar rentetan kepada CDATA dan sebaliknya.

Penggunaan:

Untuk menggunakan penyelesaian ini hanya:

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

Kod ini akan menjana output XML yang dijangkakan, di mana rentetan terkandung dalam 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>

(Nota: Contoh XML output mungkin berbeza sedikit daripada yang asal, bergantung pada versi .NET dan tetapan bersiri. Kuncinya ialah atribut MyStringCDATA berjaya merangkum rentetan dalam bahagian CDATA.)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Rentetan sebagai CDATA Menggunakan XmlSerializer .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn