Utilisation de .NET XmlSerializer pour générer des chaînes sous forme de CDATA
Le .NET XmlSerializer
ne prend pas directement en charge la sérialisation des chaînes sous forme de CDATA à l'aide d'attributs. Cependant, une solution personnalisée utilisant un getter et un setter peut y parvenir.
Voici un cours démontrant cette technique :
<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>
Exemple de sérialisation :
<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>
Résultat attendu :
La sortie affichera la chaîne incluse dans une section 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>
Cette méthode sérialise efficacement les chaînes sous forme de CDATA à l'aide de XmlSerializer
, contournant le manque de prise en charge directe des attributs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!