public class XmlUtil
{
#region 反序列化
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type">类型</param>
/// <param name="xml">XML字符串</param>
/// <returns></returns>
public static object Deserialize(Type type, string xml)
{
try
{
using (StringReader sr = new StringReader(xml))
{
XmlSerializer xmldes = new XmlSerializer(type);
return xmldes.Deserialize(sr);
}
}
catch (Exception e)
{
return null;
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type"></param>
/// <param name="xml"></param>
/// <returns></returns>
public static object Deserialize(Type type, Stream stream)
{
XmlSerializer xmldes = new XmlSerializer(type);
return xmldes.Deserialize(stream);
}
#endregion
#region 序列化XML文件
/// <summary>
/// 序列化XML文件
/// </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();
return str;
}
#endregion
#region 将XML转换为DATATABLE
/// <summary>
/// 将XML转换为DATATABLE
/// </summary>
/// <param name="FileURL"></param>
/// <returns></returns>
public static DataTable XmlAnalysisArray()
{
try
{
string FileURL = System.Configuration.ConfigurationManager.AppSettings["Client"].ToString();
DataSet ds = new DataSet();
ds.ReadXml(FileURL);
return ds.Tables[0];
}
catch (Exception ex)
{
System.Web.HttpContext.Current.Response.Write(ex.Message.ToString());
return null;
}
}
/// <summary>
/// 将XML转换为DATATABLE
/// </summary>
/// <param name="FileURL"></param>
/// <returns></returns>
public static DataTable XmlAnalysisArray(string FileURL)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(FileURL);
return ds.Tables[0];
}
catch (Exception ex)
{
System.Web.HttpContext.Current.Response.Write(ex.Message.ToString());
return null;
}
}
#endregion
#region 获取对应XML节点的值
/// <summary>
/// 摘要:获取对应XML节点的值
/// </summary>
/// <param name="stringRoot">XML节点的标记</param>
/// <returns>返回获取对应XML节点的值</returns>
public static string XmlAnalysis(string stringRoot, string xml)
{
if (stringRoot.Equals("") == false)
{
try
{
XmlDocument XmlLoad = new XmlDocument();
XmlLoad.LoadXml(xml);
return XmlLoad.DocumentElement.SelectSingleNode(stringRoot).InnerXml.Trim();
}
catch (Exception ex)
{
}
}
return "";
}
#endregion
}
</pre><pre code_snippet_id="662361" snippet_file_name="blog_20150508_3_1990479" name="code" class="html"><pre name="code" class="html"> private void button1_Click(object sender, EventArgs e)
{
//把XML文件转换为对应的实体类
string xml = @"<Depart>
<DepartID>123</DepartID>
<PerSons>
<PerSon>
<name>张三</name>
<age>3</age>
</PerSon>
<PerSon>
<name>李斯</name>
<age>56</age>
</PerSon>
</PerSons>
</Depart>
";
var Info = (Depart)XmlUtil.Deserialize(typeof(Depart), xml);
MessageBox.Show(Info.DepartID);
}
private void button2_Click(object sender, EventArgs e)
{
//把实体类转换为XML
Depart dp = new Depart();
dp.DepartID = "qq";
dp.DepartID = "123";
PerSon p1 = new PerSon();
p1.name = "zhang";
p1.age = "4";
dp.PerSons[0] = p1;
string resutl=XmlUtil.Serializer(typeof(Depart), dp);
MessageBox.Show(resutl);
}
}
public class Depart
{
public string DepartID;
public PerSon[] PerSons=new PerSon[2];
}
public class PerSon
{
public string name;
public string age;
}