Utilisez XmlSerializer pour sérialiser la chaîne en CDATA
XmlSerializer pour .NET permet-il de sérialiser des chaînes vers CDATA à l'aide d'attributs ?
Solution :
La classe XmlSerializer de .NET n'autorise pas directement la sérialisation CDATA à l'aide de propriétés. Toutefois, vous pouvez utiliser une combinaison de propriétés XmlIgnore et de propriétés personnalisées pour obtenir les résultats souhaités.
Voici un exemple de classe qui démontre cette approche :
<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>
Dans cette classe personnalisée, utilisez l'attribut XmlIgnore pour exclure la propriété MyString de la sérialisation. Au lieu de cela, une nouvelle propriété MyStringCDATA est définie, qui renvoie un objet System.Xml.XmlCDataSection qui encapsule la chaîne requise. Cela permet la sérialisation CDATA sans avoir besoin d'attributs supplémentaires.
Utilisation :
Pour utiliser cette méthode, vous créez une instance MyClass, définissez la propriété MyString, puis la sérialisez à l'aide de XmlSerializer :
<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>
Sortie :
Cela produira la sortie XML suivante :
<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[Hello World]]></mystring></myclass></code>
Notez que la valeur MyString est enveloppée dans une section CDATA comme prévu.
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!