How do I use XmlSerializer to insert an xml string

前端 未结 4 1347
伪装坚强ぢ
伪装坚强ぢ 2020-12-10 15:15

I have defined the following class:

public class Root
{
    public string Name;
    public string XmlString;
}

and created an object:

4条回答
  •  一向
    一向 (楼主)
    2020-12-10 15:20

    You can limit the custom serialization to just the element that needs special attention like so.

    public class Root
    {
        public string Name;
    
        [XmlIgnore]
        public string XmlString
        {
            get
            {
                if (SerializedXmlString == null)
                    return "";
                return SerializedXmlString.Value;
            }
            set
            {
                if (SerializedXmlString == null)
                    SerializedXmlString = new RawString();
                SerializedXmlString.Value = value;
            }
        }
    
        [XmlElement("XmlString")]
        [Browsable(false)]
        [EditorBrowsable(EditorBrowsableState.Never)]
        public RawString SerializedXmlString;
    }
    
    public class RawString : IXmlSerializable
    {
        public string Value { get; set; }
    
        public XmlSchema GetSchema()
        {
            return null;
        }
    
        public void ReadXml(System.Xml.XmlReader reader)
        {
            this.Value = reader.ReadInnerXml();
        }
    
        public void WriteXml(System.Xml.XmlWriter writer)
        {
            writer.WriteRaw(this.Value);
        }
    }
    

提交回复
热议问题