若存储内容中包含特殊字符,将内容存储至<![CDATA[...]>中 可以避免使用转义字符.

1.创建一个CData类(CData.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
namespace CodeGenerator
{
    public class CData : IXmlSerializable
    {
        private string m_Value;
        
        public CData()
        {
        }

        public CData(string p_Value)
        {
            m_Value = p_Value;
        }

        public string Value
        {
            get
            {
                return m_Value;
            }
        }

        public void ReadXml(XmlReader reader)
        {
            m_Value = reader.ReadElementContentAsString();
        }

        public void WriteXml(XmlWriter writer)
        {
            writer.WriteCData(m_Value);
        }

        public XmlSchema GetSchema()
        {
            return (null);
        }

        public override string ToString()
        {
            return m_Value;
        }

        public static implicit operator string(CData element)
        {
            return (element == null) ? null : element.m_Value;
        }

        public static implicit operator CData(string text)
        {
            return new CData(text);
        }

    }
}

2.使用CData //QueryInfo.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace CodeGenerator
{
    [Serializable]
    public class QueryInfo
    {

        [XmlElement]
        public string QueryName
        { get; set; }

        private CData queryContentSource;
        [XmlElement("QueryContentSource", typeof(CData))]
        public CData QueryContentSource
        {
            get
            {
                return queryContentSource;
            }
            set
            {
                queryContentSource = value;
            }
        }
    }
}

3. 准备序列化和反序列化两个方法
        public static void SerializeToXML(QueryInfo queryInfo, string saveTo)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(QueryInfo));
            using (TextWriter textWriter = new StreamWriter(saveTo))
            {
                serializer.Serialize(textWriter, queryInfo);
                Process.Start(saveTo);
            }
        }

        public static QueryInfo DeserializeFromXMLReturnQueryInfo(string xmlPath)
        {
            XmlSerializer deserializer = new XmlSerializer(typeof(QueryInfo));
            QueryInfo queryinfo = null;
            using (TextReader reader = new StreamReader(xmlPath))
            {
                queryinfo = (QueryInfo)deserializer.Deserialize(reader);
            }
            return queryinfo;
        }
4.用
       QueryInfo qi = new QueryInfo();
            qi.QueryName = "Class1.dsadw";
            qi.QueryContentSource = @"selefdsajio<>&gjr fdjsiaofjeio
jtrioejwtgioreg
gjdsfl;agjf;aj
            ";
            string path = System.Environment.CurrentDirectory + @"\" + DateTime.Now.ToString("yyyyMMdd") + ".xml";

            //序列化
            SerializeToXML(qi, path);
            //反序列化
            QueryInfo qi2 = DeserializeFromXMLReturnQueryInfo(path);


Reference:
在XML中 特殊字符需要转义, 如:
&lt; < 小于号
&gt; > 大于号
&amp; & 和
&apos; ' 单引号
&quot; " 双引号

还有很多特殊字符, 请参考:
http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt

相关文章:

  • 2021-08-05
  • 2022-01-31
  • 2021-05-20
  • 2022-12-23
  • 2021-07-29
  • 2022-02-28
  • 2022-12-23
猜你喜欢
  • 2022-02-01
  • 2021-10-30
  • 2021-10-06
  • 2021-09-07
相关资源
相似解决方案