Le standard .NET XmlSerializer
ne gère pas directement la sérialisation des chaînes en tant que sections CDATA en XML. Cependant, une solution personnalisée peut être mise en œuvre pour y parvenir. Cela implique de créer une classe avec une propriété de chaîne publique et une propriété XmlCDataSection
correspondante, qui est utilisée pour la sérialisation.
Pour ce faire, nous créons une propriété marquée de XmlIgnore
pour contenir la valeur de chaîne et une autre propriété décorée de XmlElement
qui renvoie un XmlCDataSection
. L'attribut XmlElement
spécifie le nom de l'élément XML et l'attribut XmlIgnore
empêche la sérialisation directe de la propriété de chaîne.
Exemple de mise en œuvre :
<code class="language-csharp">[Serializable] public class MyClass { public MyClass() { } [XmlIgnore] // Prevents direct serialization public string MyStringProperty { get; set; } [XmlElement("MyString")] // Specifies the XML element name public System.Xml.XmlCDataSection MyStringCDATA { get { return new System.Xml.XmlDocument().CreateCDataSection(MyStringProperty); } set { MyStringProperty = value.Value; } } }</code>
Exemple de sérialisation :
<code class="language-csharp">MyClass myObject = new MyClass(); myObject.MyStringProperty = "<test>Hello World!</test>"; XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); StringWriter writer = new StringWriter(); serializer.Serialize(writer, myObject); Console.WriteLine(writer.ToString());</code>
Cet extrait de code montre comment utiliser la classe personnalisée pour sérialiser une chaîne en tant que section CDATA. Notez que le résultat variera en fonction du contenu de MyStringProperty
. La propriété XmlCDataSection
gère la conversion au format CDATA approprié lors de la sérialisation.
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!