如何将程序实体与XML进行相互的转换呢,这里提供一个实体类与xml互相转换方法!
///
实体.
///
节点名称
///
public static string ObjListToXml
(List enitities, string headtag)
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] propinfos = null;
sb.AppendLine("");
sb.AppendLine("<"+headtag+">");
foreach (T obj in enitities)
{
//初始化propertyinfo
if (propinfos == null)
{
Type objtype = obj.GetType();
propinfos = objtype.GetProperties();
}
sb.AppendLine("- ");
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("
");
}
sb.AppendLine("" + headtag + ">");
return sb.ToString();
}
xml转行为实体类
///
/// xml文件转化为实体类列表
///
/// 实体名称
/// 您的xml文件
/// xml头文件
/// 实体列表
public static List XmlToObjList(string xml, string headtag)
where T : new()
{
List list = new List();
XmlDocument doc = new XmlDocument();
PropertyInfo[] propinfos = null;
doc.LoadXml(xml);
//XmlNodeList nodelist = doc.SelectNodes(headtag);
XmlNodeList nodelist = doc.GetElementsByTagName(headtag);
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)
{
//实体类字段首字母变成小写的
string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1, propinfo.Name.Length - 1);
XmlNode cnode = node.SelectSingleNode(name);
string v = cnode.InnerText;
if (v != null)
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType), null);
}
list.Add(entity);
}
return list;
}
?xml>"+headtag+">");
sb.append(propinfo.name);
sb.append(">
阅读(1118) |
评论(1) |
引用(0)
引用地址:
注意: 该地址仅在今日23:59:59之前有效