您的位置:首页 > 编程语言 > C#

c# XML和实体类之间相互转换

2015-05-08 23:39 447 查看
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;

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: