介绍利用XMLHelper类实现XML的新建以及反序列化类的操作,XMLHelper见最底部

1.XML新增

document = XmlHelper.CreateXmlDocument("XmlClass", "");//新增根节点
document.Save(@"6.xml");//保存到本地文件
XmlHelper.Insert(pathnow, "/XmlClass", "SystemList", "", "");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList", "SystemData", "", "");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData", "SystemName", "", "系统名称1");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData", "HostUrl", "", "http://www.baidu.com");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData", "PrevKey", "", "key");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData", "SqlConn", "", "conn");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData", "FormList", "", "");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList", "FormData", "", "");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList/FormData", "SqlName", "", "sqlname");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList/FormData", "SqlData", "", "Data");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList/FormData", "SqlField", "", "data,data,data");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList/FormData", "InsertUrl", "", "www.baidu.com");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList/FormData", "UpdateUrl", "", "www.google.com");
XmlHelper.Insert(pathnow, "/XmlClass/SystemList/SystemData/FormList/FormData", "TimeInterval", "", "6000");

2.XML序列化类,用ReadXml方法,XmlClass是自己要序列化的类

string pathnow = @"6.xml";
XmlClass xmlClass = XmlHelper.ReadXML<XmlClass>(pathnow);

3.XMLClass类

[XmlRoot(ElementName = "XmlClass")]
public class XmlClass
{[XmlArray("SystemList"), XmlArrayItem("SystemData")]public List<SystemData> SystemList { get; set; }
}
[XmlRoot(ElementName = "SystemData")]
public class SystemData
{public string SystemName { get; set; }public string HostUrl { get; set; }public string PrevKey { get; set; }public string SqlConn { get; set; }[XmlArray("FormList"), XmlArrayItem("FormData")]public List<FormData> FormList { get; set; }
}
[XmlRoot(ElementName = "FormData")]
public class FormData
{/// <summary>/// sql名称/// </summary>public string SqlName { get; set; }/// <summary>/// sql语句/// </summary>public string SqlData { get; set; }/// <summary>/// 所具有的的字段/// </summary>public string SqlField { get; set; }/// <summary>/// 插入的URL/// </summary>public string InsertUrl { get; set; }/// <summary>/// 更新的URL/// </summary>public string UpdateUrl { get; set; }/// <summary>/// 时间间隔/// </summary>public int TimeInterval { get; set; }
}

4.XMLHelper类

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;namespace 服务_ERP同步助手
{public class XmlHelper{public XmlHelper(){}public enum XmlType{File,String};/// <summary>/// 创建XML文档/// </summary>/// <param name="name">根节点名称</param>/// <param name="type">根节点的一个属性值</param>/// <returns></returns>/// .net中调用方法:写入文件中,则:///          document = XmlOperate.CreateXmlDocument("sex", "sexy");///          document.Save("c:/bookstore.xml");        public static XmlDocument CreateXmlDocument(string name, string type){XmlDocument doc = null;XmlElement rootEle = null;try{doc = new XmlDocument();doc.LoadXml("<" + name + "/>");rootEle = doc.DocumentElement;rootEle.SetAttribute("type", type);}catch (Exception er){throw er;}return doc;}/// <summary>/// 读取数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>/// <returns>string</returns>/*************************************************** 使用示列:* XmlHelper.Read(path, "/Node", "")* XmlHelper.Read(path, "/Node/Element[@Attribute='Name']", "Attribute")************************************************/public static string Read(string path, string node, string attribute){string value = "";try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xn = doc.SelectSingleNode(node);value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);}catch { }return value;}/// <summary>/// 插入数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param>/// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param>/// <param name="value">值</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.Insert(path, "/Node", "Element", "", "Value")* XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value")* XmlHelper.Insert(path, "/Node", "", "Attribute", "Value")************************************************/public static void Insert(string path, string node, string element, string attribute, string value){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xn = doc.SelectSingleNode(node);if (element.Equals("")){if (!attribute.Equals("")){XmlElement xe = (XmlElement)xn;xe.SetAttribute(attribute, value);}}else{XmlElement xe = doc.CreateElement(element);if (attribute.Equals(""))xe.InnerText = value;elsexe.SetAttribute(attribute, value);xn.AppendChild(xe);}doc.Save(path);}catch { }}/// <summary>/// 修改数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param>/// <param name="value">值</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.Insert(path, "/Node", "", "Value")* XmlHelper.Insert(path, "/Node", "Attribute", "Value")************************************************/public static void Update(string path, string node, string attribute, string value){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xn = doc.SelectSingleNode(node);XmlElement xe = (XmlElement)xn;if (attribute.Equals(""))xe.InnerText = value;elsexe.SetAttribute(attribute, value);doc.Save(path);}catch { }}/// <summary>/// 删除数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>/// <param name="value">值</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.Delete(path, "/Node", "")* XmlHelper.Delete(path, "/Node", "Attribute")************************************************/public static void Delete(string path, string node, string attribute){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xn = doc.SelectSingleNode(node);XmlElement xe = (XmlElement)xn;if (attribute.Equals(""))xn.ParentNode.RemoveChild(xn);elsexe.RemoveAttribute(attribute);doc.Save(path);}catch { }}#region 读取XML资源到DataSet中/// <summary>/// 读取XML资源到DataSet中/// </summary>/// <param name="source">XML资源,文件为路径,否则为XML字符串</param>/// <param name="xmlType">XML资源类型</param>/// <returns>DataSet</returns>public static DataSet GetDataSet(string source, XmlType xmlType){DataSet ds = new DataSet();if (xmlType == XmlType.File){ds.ReadXml(source);}else{XmlDocument xd = new XmlDocument();xd.LoadXml(source);XmlNodeReader xnr = new XmlNodeReader(xd);ds.ReadXml(xnr);}return ds;}#endregion#region 操作xml文件中指定节点的数据/// <summary>/// 获得xml文件中指定节点的节点数据/// </summary>/// <param name="TableName"></param>/// <returns></returns>public static string GetNodeInfoByNodeName(string path, string nodeName){string XmlString = "";XmlDocument xml = new XmlDocument();xml.Load(path);System.Xml.XmlElement root = xml.DocumentElement;System.Xml.XmlNode node = root.SelectSingleNode("//" + nodeName);if (node != null){XmlString = node.InnerText;}return XmlString;}#endregion#region 获取一个字符串xml文档中的ds/// <summary>/// 获取一个字符串xml文档中的ds/// </summary>/// <param name="xml_string">含有xml信息的字符串</param>public static void get_XmlValue_ds(string xml_string, ref DataSet ds){System.Xml.XmlDocument xd = new XmlDocument();xd.LoadXml(xml_string);XmlNodeReader xnr = new XmlNodeReader(xd);ds.ReadXml(xnr);xnr.Close();int a = ds.Tables.Count;}#endregion#region 读取XML资源到DataTable中/// <summary>/// 读取XML资源到DataTable中/// </summary>/// <param name="source">XML资源,文件为路径,否则为XML字符串</param>/// <param name="xmlType">XML资源类型:文件,字符串</param>/// <param name="tableName">表名称</param>/// <returns>DataTable</returns>public static DataTable GetTable(string source, XmlType xmlType, string tableName){DataSet ds = new DataSet();if (xmlType == XmlType.File){ds.ReadXml(source);}else{XmlDocument xd = new XmlDocument();xd.LoadXml(source);XmlNodeReader xnr = new XmlNodeReader(xd);ds.ReadXml(xnr);}return ds.Tables[tableName];}#endregion#region 读取XML资源中指定的DataTable的指定行指定列的值/// <summary>/// 读取XML资源中指定的DataTable的指定行指定列的值/// </summary>/// <param name="source">XML资源</param>/// <param name="xmlType">XML资源类型:文件,字符串</param>/// <param name="tableName">表名</param>/// <param name="rowIndex">行号</param>/// <param name="colName">列名</param>/// <returns>值,不存在时返回Null</returns>public static object GetTableCell(string source, XmlType xmlType, string tableName, int rowIndex, string colName){DataSet ds = new DataSet();if (xmlType == XmlType.File){ds.ReadXml(source);}else{XmlDocument xd = new XmlDocument();xd.LoadXml(source);XmlNodeReader xnr = new XmlNodeReader(xd);ds.ReadXml(xnr);}return ds.Tables[tableName].Rows[rowIndex][colName];}#endregion#region 读取XML资源中指定的DataTable的指定行指定列的值/// <summary>/// 读取XML资源中指定的DataTable的指定行指定列的值/// </summary>/// <param name="source">XML资源</param>/// <param name="xmlType">XML资源类型:文件,字符串</param>/// <param name="tableName">表名</param>/// <param name="rowIndex">行号</param>/// <param name="colIndex">列号</param>/// <returns>值,不存在时返回Null</returns>public static object GetTableCell(string source, XmlType xmlType, string tableName, int rowIndex, int colIndex){DataSet ds = new DataSet();if (xmlType == XmlType.File){ds.ReadXml(source);}else{XmlDocument xd = new XmlDocument();xd.LoadXml(source);XmlNodeReader xnr = new XmlNodeReader(xd);ds.ReadXml(xnr);}return ds.Tables[tableName].Rows[rowIndex][colIndex];}#endregion#region 将DataTable写入XML文件中/// <summary>/// 将DataTable写入XML文件中/// </summary>/// <param name="dt">含有数据的DataTable</param>/// <param name="filePath">文件路径</param>public static void SaveTableToFile(DataTable dt, string filePath){DataSet ds = new DataSet("Config");ds.Tables.Add(dt.Copy());ds.WriteXml(filePath);}#endregion#region 将DataTable以指定的根结点名称写入文件/// <summary>/// 将DataTable以指定的根结点名称写入文件/// </summary>/// <param name="dt">含有数据的DataTable</param>/// <param name="rootName">根结点名称</param>/// <param name="filePath">文件路径</param>public static void SaveTableToFile(DataTable dt, string rootName, string filePath){DataSet ds = new DataSet(rootName);ds.Tables.Add(dt.Copy());ds.WriteXml(filePath);}#endregion#region 使用DataSet方式更新XML文件节点/// <summary>/// 使用DataSet方式更新XML文件节点/// </summary>/// <param name="filePath">XML文件路径</param>/// <param name="tableName">表名称</param>/// <param name="rowIndex">行号</param>/// <param name="colName">列名</param>/// <param name="content">更新值</param>/// <returns>更新是否成功</returns>public static bool UpdateTableCell(string filePath, string tableName, int rowIndex, string colName, string content){bool flag = false;DataSet ds = new DataSet();ds.ReadXml(filePath);DataTable dt = ds.Tables[tableName];if (dt.Rows[rowIndex][colName] != null){dt.Rows[rowIndex][colName] = content;ds.WriteXml(filePath);flag = true;}else{flag = false;}return flag;}#endregion#region 使用DataSet方式更新XML文件节点/// <summary>/// 使用DataSet方式更新XML文件节点/// </summary>/// <param name="filePath">XML文件路径</param>/// <param name="tableName">表名称</param>/// <param name="rowIndex">行号</param>/// <param name="colIndex">列号</param>/// <param name="content">更新值</param>/// <returns>更新是否成功</returns>public static bool UpdateTableCell(string filePath, string tableName, int rowIndex, int colIndex, string content){bool flag = false;DataSet ds = new DataSet();ds.ReadXml(filePath);DataTable dt = ds.Tables[tableName];if (dt.Rows[rowIndex][colIndex] != null){dt.Rows[rowIndex][colIndex] = content;ds.WriteXml(filePath);flag = true;}else{flag = false;}return flag;}#endregion#region 读取XML资源中的指定节点内容/// <summary>/// 读取XML资源中的指定节点内容/// </summary>/// <param name="source">XML资源</param>/// <param name="xmlType">XML资源类型:文件,字符串</param>/// <param name="nodeName">节点名称</param>/// <returns>节点内容</returns>public static object GetNodeValue(string source, XmlType xmlType, string nodeName){XmlDocument xd = new XmlDocument();if (xmlType == XmlType.File){xd.Load(source);}else{xd.LoadXml(source);}XmlElement xe = xd.DocumentElement;XmlNode xn = xe.SelectSingleNode("//" + nodeName);if (xn != null){return xn.InnerText;}else{return null;}}/// <summary>/// 读取XML资源中的指定节点内容/// </summary>/// <param name="source">XML资源</param>/// <param name="nodeName">节点名称</param>/// <returns>节点内容</returns>public static object GetNodeValue(string source, string nodeName){if (source == null || nodeName == null || source == "" || nodeName == "" || source.Length < nodeName.Length * 2){return null;}else{int start = source.IndexOf("<" + nodeName + ">") + nodeName.Length + 2;int end = source.IndexOf("</" + nodeName + ">");if (start == -1 || end == -1){return null;}else if (start >= end){return null;}else{return source.Substring(start, end - start);}}}#endregion#region 更新XML文件中的指定节点内容/// <summary>/// 更新XML文件中的指定节点内容/// </summary>/// <param name="filePath">文件路径</param>/// <param name="nodeName">节点名称</param>/// <param name="nodeValue">更新内容</param>/// <returns>更新是否成功</returns>public static bool UpdateNode(string filePath, string nodeName, string nodeValue){bool flag = false;XmlDocument xd = new XmlDocument();xd.Load(filePath);XmlElement xe = xd.DocumentElement;XmlNode xn = xe.SelectSingleNode("//" + nodeName);if (xn != null){xn.InnerText = nodeValue;flag = true;}else{flag = false;}return flag;}#endregion/// <summary>/// 读取xml文件,并将文件序列化为类/// </summary>/// <typeparam name="T"></typeparam>/// <param name="path"></param>/// <returns></returns>public static T ReadXML<T>(string path){XmlSerializer reader = new XmlSerializer(typeof(XmlClass));StreamReader file = new StreamReader(@path);return (T)reader.Deserialize(file);}/// <summary>/// 将对象写入XML文件/// </summary>/// <typeparam name="T">C#对象名</typeparam>/// <param name="item">对象实例</param>/// <param name="path">路径</param>/// <param name="jjdbh">标号</param>/// <param name="ends">结束符号(整个xml的路径类似如下:C:\xmltest\201111send.xml,其中path=C:\xmltest,jjdbh=201111,ends=send)</param>/// <returns></returns>public static string WriteXML<T>(T item, string path, string jjdbh, string ends){if (string.IsNullOrEmpty(ends)){//默认为发送ends = "send";}int i = 0;//控制写入文件的次数,XmlSerializer serializer = new XmlSerializer(item.GetType());object[] obj = new object[] { path, "\\", jjdbh, ends, ".xml" };string xmlPath = String.Concat(obj);while (true){try{//用filestream方式创建文件不会出现“文件正在占用中,用File.create”则不行FileStream fs;fs = File.Create(xmlPath);fs.Close();TextWriter writer = new StreamWriter(xmlPath, false, Encoding.UTF8);XmlSerializerNamespaces xml = new XmlSerializerNamespaces();xml.Add(string.Empty, string.Empty);serializer.Serialize(writer, item, xml);writer.Flush();writer.Close();break;}catch (Exception exec){if (i < 5){i++;continue;}else{ break; }}}return SerializeToXmlStr<T>(item, true);}/// <summary>/// 静态扩展/// </summary>/// <typeparam name="T">需要序列化的对象类型,必须声明[Serializable]特征</typeparam>/// <param name="obj">需要序列化的对象</param>/// <param name="omitXmlDeclaration">true:省略XML声明;否则为false.默认false,即编写 XML 声明。</param>/// <returns></returns>public static string SerializeToXmlStr<T>(T obj, bool omitXmlDeclaration){return XmlSerialize<T>(obj, omitXmlDeclaration);}#region XML序列化反序列化相关的静态方法/// <summary>/// 使用XmlSerializer序列化对象/// </summary>/// <typeparam name="T">需要序列化的对象类型,必须声明[Serializable]特征</typeparam>/// <param name="obj">需要序列化的对象</param>/// <param name="omitXmlDeclaration">true:省略XML声明;否则为false.默认false,即编写 XML 声明。</param>/// <returns>序列化后的字符串</returns>public static string XmlSerialize<T>(T obj, bool omitXmlDeclaration){/* This property only applies to XmlWriter instances that output text content to a stream; otherwise, this setting is ignored.可能很多朋友遇见过 不能转换成Xml不能反序列化成为UTF8XML声明的情况,就是这个原因。*/XmlWriterSettings xmlSettings = new XmlWriterSettings();xmlSettings.OmitXmlDeclaration = omitXmlDeclaration;xmlSettings.Encoding = new System.Text.UTF8Encoding(false);MemoryStream stream = new MemoryStream();//var writer = new StringWriter();XmlWriter xmlwriter = XmlWriter.Create(stream/*writer*/, xmlSettings); //这里如果直接写成:Encoding = Encoding.UTF8 会在生成的xml中加入BOM(Byte-order Mark) 信息(Unicode 字节顺序标记) , 所以new System.Text.UTF8Encoding(false)是最佳方式,省得再做替换的麻烦XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();xmlns.Add(String.Empty, String.Empty); //在XML序列化时去除默认命名空间xmlns:xsd和xmlns:xsiXmlSerializer ser = new XmlSerializer(typeof(T));ser.Serialize(xmlwriter, obj, xmlns);return Encoding.UTF8.GetString(stream.ToArray());//writer.ToString();}/// <summary>/// 使用XmlSerializer序列化对象/// </summary>/// <typeparam name="T"></typeparam>/// <param name="path">文件路径</param>/// <param name="obj">需要序列化的对象</param>/// <param name="omitXmlDeclaration">true:省略XML声明;否则为false.默认false,即编写 XML 声明。</param>/// <param name="removeDefaultNamespace">是否移除默认名称空间(如果对象定义时指定了:XmlRoot(Namespace = "http://www.xxx.com/xsd")则需要传false值进来)</param>/// <returns>序列化后的字符串</returns>public static void XmlSerialize<T>(string path, T obj, bool omitXmlDeclaration, bool removeDefaultNamespace){XmlWriterSettings xmlSetings = new XmlWriterSettings();xmlSetings.OmitXmlDeclaration = omitXmlDeclaration;using (XmlWriter xmlwriter = XmlWriter.Create(path, xmlSetings)){XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();if (removeDefaultNamespace)xmlns.Add(String.Empty, String.Empty); //在XML序列化时去除默认命名空间xmlns:xsd和xmlns:xsiXmlSerializer ser = new XmlSerializer(typeof(T));ser.Serialize(xmlwriter, obj, xmlns);}}private static byte[] ShareReadFile(string filePath){byte[] bytes;//避免"正由另一进程使用,因此该进程无法访问此文件"造成异常 共享锁 flieShare必须为ReadWrite,但是如果文件不存在的话,还是会出现异常,所以这里不能吃掉任何异常,但是需要考虑到这些问题using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){bytes = new byte[fs.Length];int numBytesToRead = (int)fs.Length;int numBytesRead = 0;while (numBytesToRead > 0){int n = fs.Read(bytes, numBytesRead, numBytesToRead);if (n == 0)break;numBytesRead += n;numBytesToRead -= n;}}return bytes;}/// <summary>/// 从文件读取并反序列化为对象 (解决: 多线程或多进程下读写并发问题)/// </summary>/// <typeparam name="T">返回的对象类型</typeparam>/// <param name="path">文件地址</param>/// <returns></returns>public static T XmlFileDeserialize<T>(string path){byte[] bytes = ShareReadFile(path);if (bytes.Length < 1)//当文件正在被写入数据时,可能读出为0for (int i = 0; i < 5; i++){ //5次机会bytes = ShareReadFile(path); // 采用这样诡异的做法避免独占文件和文件正在被写入时读出来的数据为0字节的问题。if (bytes.Length > 0) break;System.Threading.Thread.Sleep(50); //悲观情况下总共最多消耗1/4秒,读取文件}XmlDocument doc = new XmlDocument();doc.Load(new MemoryStream(bytes));if (doc.DocumentElement != null)return (T)new XmlSerializer(typeof(T)).Deserialize(new XmlNodeReader(doc.DocumentElement));return default(T);XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();xmlReaderSettings.CloseInput = true;using (XmlReader xmlReader = XmlReader.Create(path, xmlReaderSettings)){T obj = (T)new XmlSerializer(typeof(T)).Deserialize(xmlReader);return obj;}}/// <summary>/// 使用XmlSerializer反序列化对象/// </summary>/// <param name="xmlOfObject">需要反序列化的xml字符串</param>/// <returns>反序列化后的对象</returns>public static T XmlDeserialize<T>(string xmlOfObject) where T : class{XmlReader xmlReader = XmlReader.Create(new StringReader(xmlOfObject), new XmlReaderSettings());return (T)new XmlSerializer(typeof(T)).Deserialize(xmlReader);}#endregion}
}

XmlSerializer序列化反序列化

public static string XmlSerialize<T>(T obj)
{using (StringWriter sw = new StringWriter()){Type t = obj.GetType();XmlSerializer serializer = new XmlSerializer(obj.GetType());serializer.Serialize(sw, obj);sw.Close();return sw.ToString();}
}
static T DeseriaLizeObj<T>(string xml)
{XmlSerializer xs = new XmlSerializer(typeof(T));StringReader sr = new StringReader(xml);object obj = xs.Deserialize(sr);sr.Close();return (T)obj;}

XML序列化以及新增节点XMLHelper相关推荐

  1. XML序列化和反序列化(C#)

    主要参考资料: http://www.codeproject.com/Articles/483055/XML-Serialization-and-Deserialization-Part-1 http ...

  2. 开心网外挂开发之 XML序列化于反序列化

    通过昨天的文章我们已经了解了开发一个开心网的外挂所需要的最基本的东本,接下来的工作可以说基本上就上围绕这个基础来进行的,我写这一系列文章主要的目地不仅仅是为了让大家了解怎么开发开心网外挂,最主要的目过 ...

  3. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary>/// 对象序列化成XML文件/// </summary>/// <param name= ...

  4. C#对象XML序列化(一):序列化方法和常用特性

    .Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和从XML中反序列化为对象.Serializer的使用比较 ...

  5. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  6. [WPF]xml序列化以及反序列化数据

    代码 XML序列化工具类 public static class XMLHelper{/// <summary>/// 将对象序列化为指定的文件名/// </summary>/ ...

  7. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 1 /// <summary> ...

  8. 在.net 当中如何XML序列化一个Collection

    Collection主要是指像Array, ArrayList, List, Dictionary, HashTable这些数据类型,大家平时用的很多.如果一个类中有一个Collection类型的成员 ...

  9. C#XML序列化特性全中文教程

    如博文无法正常显示,请访问原文地址: https://blog.csdn.net/ChinarCSDN/article/details/83744489 C#中序列化XML特性用法 本文提供全图文流程 ...

最新文章

  1. linux 端口添加地址,linux – 绑定,网络(接口)和多播地址有什么区别?
  2. Lintcode 1230解题思路和c++代码
  3. 十天冲刺---Day8
  4. 微信小程序-page
  5. 谷歌下架应用引争议,网友请愿 GitHub 开发「App Store」!
  6. java pgp加密_如何解密PGP加密文件(由两个PGP密钥加密.Key1具有公钥,私钥.Key2只有公钥)通过JAVA API...
  7. 2020年上半年,谷歌共检测到11个已遭利用的 0day
  8. jquery的pagination插件实现无刷新的分页
  9. 浅谈HTML5之一:语法的改变
  10. java正则匹配性能,Java正则表达式的性能问题
  11. 宇视存储服务器vs系列,宇视产品系列之存储产品篇1.pptx
  12. 警察抓小偷打字游戏JAVA_警察抓小偷打字游戏金山打字通游戏
  13. Windows 2003安装和配置活动目录服务
  14. java飞机代码_java实现飞机游戏代码
  15. 如何判断数字华容道中随机排列的数字阵列是否有解
  16. 职场低情商就这三句话
  17. KendoUI组件基础(上)
  18. c 窗体连接mysql_c 窗体如何连接数据库
  19. Pandas批量拆分Excel与合并Excel(十四)
  20. MySQL表结构设计

热门文章

  1. 1.2 JDK安装与环境变量设置
  2. 关于libStagefright系列漏洞分析
  3. Vue.js用法详解(一)更新中~
  4. Spark机器学习(9):FPGrowth算法
  5. Unity3D热更新LuaFramework入门实战
  6. 微信小程序架构分析 (上)
  7. sql 集合查询 数据更新操作语句
  8. 终于明白了 DevOps 与 SRE 的区别!
  9. Redis 击穿、穿透、雪崩产生原因以及解决思路
  10. 手写一个简单的HashMap,搞定挑剔面试官