Exemplo n.º 1
0
 /// <summary>
 /// 将对象Xml序列化成字节数组【Btye[]】,可自定义命名空间,可设置写入器配置
 /// </summary>
 /// <typeparam name="T">要序列化的对象类型</typeparam>
 /// <param name="value">要序列化的对象</param>
 /// <param name="namespaces">要添加的命名空间集合,如 xmlns:xsi="xxx",【xsi】Key为[前缀],【xxx】Value为[值]</param>
 /// <param name="settings">Xml写入器配置</param>
 /// <returns></returns>
 public static byte[] ToXmlBytes <T>(this T value, IEnumerable <KeyValuePair <string, string> > namespaces, XmlWriterSettings settings = null) where T : class, new()
 {
     using MemoryStream stream = new MemoryStream();
     using (XmlWriter xmlWriter = settings.IsNull() ? XmlWriter.Create(stream) : XmlWriter.Create(stream, settings))
     {
         XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
         if (namespaces?.Count() > 0)
         {
             foreach (var item in namespaces)
             {
                 ns.Add(item.Key, item.Value);//添加前缀和命名空间值,如 xmlns:xsi="xxx",【xsi】为前缀,【xxx】为值
             }
         }
         new XmlSerializer(typeof(T)).Serialize(xmlWriter, value, ns);//序列化对象
     }
     return(stream.ToArray());
 }