123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml;
- using System.Xml.Serialization;
- namespace DbCommon.Function
- {
- public class XmlTools
- {
- public static string XmlSerialize<T>(T obj)
- {
- try
- {
- using (MemoryStream ms = new MemoryStream())
- {
- var setting = new XmlWriterSettings()
- {
- Encoding = new UTF8Encoding(false),
- Indent = true,
- };
- using (XmlWriter writer = XmlWriter.Create(ms, setting))
- {
- XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
- ns.Add("", "");
- XmlSerializer xmlSearializer = new XmlSerializer(typeof(T));
- xmlSearializer.Serialize(new XmlWriterEE(writer), obj, ns);
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- }
- catch (Exception)
- {
- return null;
- }
- }
- public static T XmlDeserialize<T>(string xml)
- {
- try
- {
- using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
- {
- using (XmlReader xr = XmlReader.Create(ms))
- {
- XmlSerializer xmlSearializer = new XmlSerializer(typeof(T));
- return (T)xmlSearializer.Deserialize(xr);
- }
- }
- }
- catch (Exception)
- {
- return default(T);
- }
- }
- }
- public class XmlWriterEE : XmlWriter
- {
- private XmlWriter baseWriter;
- public XmlWriterEE(XmlWriter w)
- {
- baseWriter = w;
- }
- //Force WriteEndElement to use WriteFullEndElement
- public override void WriteEndElement() { baseWriter.WriteFullEndElement(); }
- public override void WriteFullEndElement()
- {
- baseWriter.WriteFullEndElement();
- }
- public override void Close()
- {
- baseWriter.Close();
- }
- public override void Flush()
- {
- baseWriter.Flush();
- }
- public override string LookupPrefix(string ns)
- {
- return (baseWriter.LookupPrefix(ns));
- }
- public override void WriteBase64(byte[] buffer, int index, int count)
- {
- baseWriter.WriteBase64(buffer, index, count);
- }
- public override void WriteCData(string text)
- {
- baseWriter.WriteCData(text);
- }
- public override void WriteCharEntity(char ch)
- {
- baseWriter.WriteCharEntity(ch);
- }
- public override void WriteChars(char[] buffer, int index, int count)
- {
- baseWriter.WriteChars(buffer, index, count);
- }
- public override void WriteComment(string text)
- {
- baseWriter.WriteComment(text);
- }
- public override void WriteDocType(string name, string pubid, string sysid, string subset)
- {
- baseWriter.WriteDocType(name, pubid, sysid, subset);
- }
- public override void WriteEndAttribute()
- {
- baseWriter.WriteEndAttribute();
- }
- public override void WriteEndDocument()
- {
- baseWriter.WriteEndDocument();
- }
- public override void WriteEntityRef(string name)
- {
- baseWriter.WriteEntityRef(name);
- }
- public override void WriteProcessingInstruction(string name, string text)
- {
- baseWriter.WriteProcessingInstruction(name, text);
- }
- public override void WriteRaw(string data)
- {
- baseWriter.WriteRaw(data);
- }
- public override void WriteRaw(char[] buffer, int index, int count)
- {
- baseWriter.WriteRaw(buffer, index, count);
- }
- public override void WriteStartAttribute(string prefix, string localName, string ns)
- {
- baseWriter.WriteStartAttribute(prefix, localName, ns);
- }
- public override void WriteStartDocument(bool standalone)
- {
- baseWriter.WriteStartDocument(standalone);
- }
- public override void WriteStartDocument()
- {
- baseWriter.WriteStartDocument();
- }
- public override void WriteStartElement(string prefix, string localName, string ns)
- {
- baseWriter.WriteStartElement(prefix, localName, ns);
- }
- public override WriteState WriteState
- {
- get { return baseWriter.WriteState; }
- }
- public override void WriteString(string text)
- {
- baseWriter.WriteString(text);
- }
- public override void WriteSurrogateCharEntity(char lowChar, char highChar)
- {
- baseWriter.WriteSurrogateCharEntity(lowChar, highChar);
- }
- public override void WriteWhitespace(string ws)
- {
- baseWriter.WriteWhitespace(ws);
- }
- }
- }
|