XmlSerializer 实现序列化CDATA

     [XmlIgnore]
        public string GuestRemarks { get; set; }

        [XmlElement("GuestRemarks")]
        public XmlNode[] Nodes
        {
            get
            {
                var dom = new XmlDocument();
                return new XmlNode[] {dom.CreateCDataSection(this.GuestRemarks)};
            }
            set
            {
                if (value == null)
                {
                    this.GuestRemarks = null;
                    return;
                }

                if (value.Length != 1)
                    throw new InvalidOperationException("Invalid array.");
                var content = value[0];
                if (null == content)
                    throw new InvalidOperationException("Node is null.");
                this.GuestRemarks = content.Value;
            }
        }

 

转载于:https://www.cnblogs.com/ShaYeBlog/p/8987319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`XmlSerializer`是.NET中用于XML序列化和反序列化的类,但它无法直接序列化`Dictionary`字典对象。这是因为`Dictionary`类在.NET中不是可序列化的类型。 `XmlSerializer`可以序列化和反序列化具有公共可读/可写属性的类和结构,以及数组和集合类型。但是,在序列化过程中,它无法处理键/值对的字典结构。 要序列化字典对象,你可以使用其他方法,例如将字典转换为可序列化的类型,或使用其他序列化库(如`DataContractSerializer`或`Json.NET`)。 如果你仍然希望使用`XmlSerializer`来序列化字典,你可以考虑创建一个可序列化的封装类来存储字典的键和值,并在需要时将其转换为字典。以下是一个示例代码: ```csharp using System; using System.Collections.Generic; using System.Xml.Serialization; public class SerializableDictionary<TKey, TValue> { [XmlArrayItem("Item")] public List<SerializableKeyValuePair<TKey, TValue>> Items { get; set; } public SerializableDictionary() { Items = new List<SerializableKeyValuePair<TKey, TValue>>(); } public SerializableDictionary(Dictionary<TKey, TValue> dictionary) { Items = new List<SerializableKeyValuePair<TKey, TValue>>(); foreach (var kvp in dictionary) { Items.Add(new SerializableKeyValuePair<TKey, TValue>(kvp.Key, kvp.Value)); } } public Dictionary<TKey, TValue> ToDictionary() { var dictionary = new Dictionary<TKey, TValue>(); foreach (var item in Items) { dictionary[item.Key] = item.Value; } return dictionary; } } public class SerializableKeyValuePair<TKey, TValue> { [XmlAttribute("Key")] public TKey Key { get; set; } [XmlAttribute("Value")] public TValue Value { get; set; } public SerializableKeyValuePair() { } public SerializableKeyValuePair(TKey key, TValue value) { Key = key; Value = value; } } public class Program { public static void Main() { // 创建一个字典 Dictionary<string, int> dictionary = new Dictionary<string, int>(); dictionary.Add("Apple", 1); dictionary.Add("Banana", 2); dictionary.Add("Orange", 3); // 将字典转换为可序列化的类型 var serializableDictionary = new SerializableDictionary<string, int>(dictionary); // 创建XmlSerializer对象并序列化字典 XmlSerializer serializer = new XmlSerializer(typeof(SerializableDictionary<string, int>)); using (var writer = new System.IO.StringWriter()) { serializer.Serialize(writer, serializableDictionary); string xml = writer.ToString(); Console.WriteLine(xml); } } } ``` 上述代码中,我们创建了一个`SerializableDictionary`类,它包含一个`Items`属性,用于存储字典的键值对。然后,我们将字典转换为`SerializableDictionary`对象,并使用`XmlSerializer`将其序列化为XML字符串。 希望这个示例可以帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值