XmlHelpers
2024-06-16 00:53:58
最近处理数据的时候用到了Xml和其他数据之间的转换,所以整理了一些方法。
class XMLHelper{/// <summary>/// 读取xml模板/// </summary>/// <param name="filename">相对路径</param>/// <returns></returns>public static string Getmsg(string filename){XmlDocument xmldoc = new XmlDocument();string path = AppDomain.CurrentDomain.BaseDirectory;string strUrl = path + filename;xmldoc.Load(strUrl);return xmldoc.InnerXml;}public static XmlDocument GetXmlDoc(string fielName){XmlDocument xmldoc = new XmlDocument();string path = AppDomain.CurrentDomain.BaseDirectory;string strUrl = path + fielName;xmldoc.Load(strUrl);return xmldoc;}public static XmlDocument GetXmlDocument(string xml){XmlDocument xmlDoc = new XmlDocument();if (!string.IsNullOrEmpty(xml)){xmlDoc.LoadXml(xml);}return xmlDoc;}#region 序列化/// <summary>/// 序列化/// </summary>/// <param name="type">类型</param>/// <param name="obj">对象</param>/// <returns></returns>public static string Serializer(Type type, object obj){MemoryStream Stream = new MemoryStream();XmlSerializer xml = new XmlSerializer(type);try{//序列化对象xml.Serialize(Stream, obj);}catch (InvalidOperationException){throw;}Stream.Position = 0;StreamReader sr = new StreamReader(Stream);string str = sr.ReadToEnd();sr.Dispose();Stream.Dispose();return str;}#endregion//反序列化//接收2个参数:xmlFilePath(需要反序列化的XML文件的绝对路径),type(反序列化XML为哪种对象类型)public static object DeserializeFromXml(string xml, Type type){object result = null;try{XmlDocument xmlDoc = new XmlDocument();xmlDoc.LoadXml(xml);MemoryStream ms = new MemoryStream();xmlDoc.Save(ms);ms.Seek(0, SeekOrigin.Begin);XmlSerializer xs = new XmlSerializer(type);result = xs.Deserialize(ms);}catch (Exception ex){throw;}return result;}/// <summary>/// XML转换成DataTable/// </summary>/// <param name="xmlStr"></param>/// <returns></returns>public static DataTable XmlToDataTable(string xmlStr){if (!string.IsNullOrEmpty(xmlStr)){StringReader StrStream = null;XmlTextReader Xmlrdr = null;try{DataSet ds = new DataSet();//读取字符串中的信息 StrStream = new StringReader(xmlStr);//获取StrStream中的数据 Xmlrdr = new XmlTextReader(StrStream);//ds获取Xmlrdr中的数据 ds.ReadXml(Xmlrdr);return ds.Tables[0];}catch (Exception ex){throw;}finally{//释放资源 if (Xmlrdr != null){Xmlrdr.Close();StrStream.Close();StrStream.Dispose();}}}return null;}/// <summary>/// 格式化XML/// </summary>/// <param name="format">XML</param>/// <param name="arg">传递DataRow可以直接格式化,也可以自己实现IFormatProvider</param>/// <param name="formatProvider"></param>/// <returns></returns>public static string Format(string format, object arg){char[] preChar = new char[] { '{' };char[] endChar = new char[] { '}' };DataRow row = arg as DataRow;if (row != null){var RegexStr = string.Format("{0}.+?{1}", string.Join("", preChar.ToArray()), string.Join("", endChar.ToArray()));Regex reg = new Regex(RegexStr);MatchCollection matchList = reg.Matches(format);for (int i = 0; i < matchList.Count; i++){string fieldName = matchList[i].ToString().TrimStart(preChar).TrimEnd(endChar);string fieldVal = string.Empty;if (row.Table.Columns.Contains(fieldName)){fieldVal = row[fieldName].ToString();}format = format.Replace(matchList[i].ToString(), fieldVal);}}return format;}}
转载于:https://www.cnblogs.com/qidakang/p/7778167.html
XmlHelpers相关推荐
- 关于XML文档操作类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin ...
- BizTalk 10034 错误
错误消息: xlang/s engine event log entry: 未捕获的异常(请参阅下面的"内部异常")已经挂起服务"Myapp.Myapp01(6cf1f8 ...
- ionic3 php 电商视频,ionic3仿京东商城源码
[实例简介] ionic3仿京东商城源码,非常好用的ionic3学习参考资料. [实例截图] [核心代码] ionic3仿京东商城源码 ├── README.md ├── config.xml ├── ...
最新文章
- android 多个标签页,Android一个标签页的实现
- Java System类
- java e.getmessage() null_Java e.getMessage 错误信息为null
- 958. 二叉树的完全性检验 golang
- stc15w4k32s4芯片引脚图片_单片机引脚功能初识及提高(3)
- 深入理解K8S网络原理下
- android学习笔记---37_采用广播接收者实现系统短信操作_获取短信_收发短信等
- 上传图片到服务器不能马上响应,用post方式上传图片到服务器
- 各种浏览器开启JavaScript脚本方法
- 【安装版】mysql数据库安装指南(超级详细)
- C语言中三目运算符的结合性问题
- vs2019中出现PyTorch is not linked with support for cuda devices的解决方法
- 小球落地c语言编程答案,c语言模拟小球落地
- 0x8007000e错误
- 十大实用网站推荐(1)
- R语言单因素方差分析(附代码)
- 甘肃省天水市谷歌卫星地图下载
- Cravatar头像
- Java专项练习二(选择题)
- docker 删除映像_创建自己的Docker映像(技术提示#57)