实体类转XML(XML转实体类)操作
2008-11-26 20:21
211 查看
要转换的实体类如下:
public class OrderGoodInfo
{
private int _type;
private int _goodid;
private int _number;
private string _name;
private decimal _price;
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Type
{
get { return _type; }
set { _type = value; }
}
public int GoodId
{
get { return _goodid; }
set { _goodid = value; }
}
public int Number
{
get { return _number; }
set { _number = value; }
}
public decimal Price
{
get { return _price; }
set { _price = value; }
}
}
#region 实体类,XML互操作
/// <summary>
/// 实体类序列化成xml
/// </summary>
/// <param name="enitities">The enitities.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static string ObjListToXml<T>(List<T> enitities, string headtag)
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] propinfos = null;
sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.AppendLine("<"+headtag+">");
foreach (T obj in enitities)
{
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = obj.GetType();
propinfos = objtype.GetProperties();
}
sb.AppendLine("<item>");
foreach (PropertyInfo propinfo in propinfos)
{
sb.Append("<");
sb.Append(propinfo.Name);
sb.Append(">");
sb.Append(propinfo.GetValue(obj, null));
sb.Append("</");
sb.Append(propinfo.Name);
sb.AppendLine(">");
}
sb.AppendLine("</item>");
}
sb.AppendLine("</" + headtag + ">");
return sb.ToString();
}
/// <summary>
/// 使用XML初始化实体类容器
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="typename">The typename.</param>
/// <param name="xml">The XML.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static List<T> XmlToObjList<T>(string xml,string headtag)
where T : new()
{
List<T> list = new List<T>();
XmlDocument doc = new XmlDocument();
PropertyInfo[] propinfos = null;
doc.LoadXml(xml);
XmlNodeList nodelist = doc.SelectNodes("/" + headtag + "/item");
foreach (XmlNode node in nodelist)
{
T entity = new T();
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = entity.GetType();
propinfos = objtype.GetProperties();
}
//填充entity类的属性
foreach (PropertyInfo propinfo in propinfos)
{
XmlNode cnode = node.SelectSingleNode(propinfo.Name);
string v = cnode.InnerText;
if (v != null)
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
}
list.Add(entity);
}
return list;
}
#endregion
}
使用如下:
protected void Page_Load(object sender, EventArgs e)
{
OrderGoodInfo good1 = new OrderGoodInfo();
good1.GoodId = 1;
good1.Number = 1;
good1.Price = 100;
good1.Type = 1;
OrderGoodInfo good2= new OrderGoodInfo();
good2.GoodId = 2;
good2.Number = 2;
good2.Price = 200;
good2.Type = 2;
List<OrderGoodInfo> list = new List<OrderGoodInfo>();
list.Add(good1);
list.Add(good2);
string xmlstr = XmlHelper.ObjListToXml(list, "goods");
Response.Write(xmlstr);
List<OrderGoodInfo> nlist = XmlHelper.XmlToObjList<OrderGoodInfo>(xmlstr, "goods");
Response.Write(XmlHelper.ObjListToXml(nlist, "goods"));
}
public class OrderGoodInfo
{
private int _type;
private int _goodid;
private int _number;
private string _name;
private decimal _price;
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Type
{
get { return _type; }
set { _type = value; }
}
public int GoodId
{
get { return _goodid; }
set { _goodid = value; }
}
public int Number
{
get { return _number; }
set { _number = value; }
}
public decimal Price
{
get { return _price; }
set { _price = value; }
}
}
#region 实体类,XML互操作
/// <summary>
/// 实体类序列化成xml
/// </summary>
/// <param name="enitities">The enitities.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static string ObjListToXml<T>(List<T> enitities, string headtag)
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] propinfos = null;
sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.AppendLine("<"+headtag+">");
foreach (T obj in enitities)
{
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = obj.GetType();
propinfos = objtype.GetProperties();
}
sb.AppendLine("<item>");
foreach (PropertyInfo propinfo in propinfos)
{
sb.Append("<");
sb.Append(propinfo.Name);
sb.Append(">");
sb.Append(propinfo.GetValue(obj, null));
sb.Append("</");
sb.Append(propinfo.Name);
sb.AppendLine(">");
}
sb.AppendLine("</item>");
}
sb.AppendLine("</" + headtag + ">");
return sb.ToString();
}
/// <summary>
/// 使用XML初始化实体类容器
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="typename">The typename.</param>
/// <param name="xml">The XML.</param>
/// <param name="headtag">The headtag.</param>
/// <returns></returns>
public static List<T> XmlToObjList<T>(string xml,string headtag)
where T : new()
{
List<T> list = new List<T>();
XmlDocument doc = new XmlDocument();
PropertyInfo[] propinfos = null;
doc.LoadXml(xml);
XmlNodeList nodelist = doc.SelectNodes("/" + headtag + "/item");
foreach (XmlNode node in nodelist)
{
T entity = new T();
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = entity.GetType();
propinfos = objtype.GetProperties();
}
//填充entity类的属性
foreach (PropertyInfo propinfo in propinfos)
{
XmlNode cnode = node.SelectSingleNode(propinfo.Name);
string v = cnode.InnerText;
if (v != null)
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
}
list.Add(entity);
}
return list;
}
#endregion
}
使用如下:
protected void Page_Load(object sender, EventArgs e)
{
OrderGoodInfo good1 = new OrderGoodInfo();
good1.GoodId = 1;
good1.Number = 1;
good1.Price = 100;
good1.Type = 1;
OrderGoodInfo good2= new OrderGoodInfo();
good2.GoodId = 2;
good2.Number = 2;
good2.Price = 200;
good2.Type = 2;
List<OrderGoodInfo> list = new List<OrderGoodInfo>();
list.Add(good1);
list.Add(good2);
string xmlstr = XmlHelper.ObjListToXml(list, "goods");
Response.Write(xmlstr);
List<OrderGoodInfo> nlist = XmlHelper.XmlToObjList<OrderGoodInfo>(xmlstr, "goods");
Response.Write(XmlHelper.ObjListToXml(nlist, "goods"));
}
相关文章推荐
- 对xsd文件的操作 生成java实体并解析生成的xml
- 通过generatorConfig.xml自动生成实体类和数据库操作文件
- asp.net 实体类转XML(XML转实体类)操作
- WPF中两种设计模式操作XML转实体类
- android中pull解析,读取xml中的实体类(通过xml发送实体类)
- C#实体映射XML操作
- C# XML与实体互转,实体类反序列化属性对应转换成 XmlAttribute
- XML----DTD-操作,实体
- 对xsd文件的操作 生成java实体并解析生成的xml
- MyBatis 3(2)实体映射 & CRUD 操作(XML/注解方式)
- Hibernate之*hbm.xml文件和实体类操作数据库实现插入和查询
- XmlSerializer序列化实体类来操作xml文件
- SSH整合之实体类和 实体类.hbm.xml
- 利用jdk对xsd文件操作生成java实体并解析生成的xml
- c#对xml的简单操作
- C#TreeView控件与XML相关操作
- C#小Tip:Xml操作简明手册 1
- C#操作XML的方法
- XML操作备忘录
- 基于DOM的XML操作(读、写、修改、删除)