实体对象与XML相互转换

文章介绍了如何在C#中使用XmlSerialize和DESerializer方法进行XML到对象及对象到XML的转换,包括空白字符处理、命名空间管理和异常处理。
摘要由CSDN通过智能技术生成

注意:XML字符转为对象,XML节点需要与类名,属性名一致

笔记:XML结果:<Group><RowID>1</RowID><RowID>2</RowID></Group> 可以使用XMLArrayItem属性更改子节点的名称
public static class TXmlSerializeHelper
{
	/// <summary>
	/// 空白字符处理
	/// </summary>
	/// <param name="aStr"></param>
	/// <returns></returns>
	public static string WhiteSpaceDel(string aStr) { 
		aStr = aStr.Replace(" ","");
		return aStr;
	}
	/// <summary>
	/// 将实体对象转换成XML
	/// </summary>
	/// <typeparam name="T">实体类型</typeparam>
	/// <param name="obj">实体对象</param>
	public static string XmlSerialize<T>(T obj)
	{
		try
		{
			using (StringWriter sw = new StringWriter())
			{
				Type t = obj.GetType();

				//设置信息
				
				XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(new XmlQualifiedName[] { 
					new XmlQualifiedName(string.Empty)   //删除命名空间
				});
				XmlWriterSettings setting = new XmlWriterSettings();
				setting.Indent = true;
				setting.OmitXmlDeclaration = true;  //声明信息删除
				setting.IndentChars = "";
				setting.NewLineChars = "\r\n";
				setting.Encoding = Encoding.UTF8;
				//setting.NamespaceHandling = NamespaceHandling.OmitDuplicates;
				//setting.DoNotEscapeUriAttributes = false;

				XmlWriter xmlWriter = XmlWriter.Create(sw, setting);

				XmlSerializer serializer = new XmlSerializer(obj.GetType());
				serializer.Serialize(xmlWriter,obj,namespaces);

				xmlWriter.Close();
				sw.Close();
				return sw.ToString();
			}
		}
		catch (Exception ex)
		{
			throw new Exception("将实体对象转换成XML异常", ex);
		}
	}

	/// <summary>
	/// 将XML转换成实体对象
	/// </summary>
	/// <typeparam name="T">实体类型</typeparam>
	/// <param name="strXML">XML</param>
	public static T DESerializer<T>(string strXML) where T : class
	{
		try
		{
			using (StringReader sr = new StringReader(strXML))
			{
				XmlSerializer serializer = new XmlSerializer(typeof(T));
				return serializer.Deserialize(sr) as T;
			}
		}
		catch (Exception ex)
		{
			throw new Exception("将XML转换成实体对象异常", ex);
		}
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlYFlOWERANDLEAF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值