C#string类型的xml如何解析成实体类型

例如如下string类型的x'm'l格式字符串,
string xmltest="<?xml version="1.0" encoding="utf-8"?><Data>
<properties name="ProductID">123</properties>
<properties name="UserName">usernmva</properties>
<properties name="Password">123</properties>
<properties name="Number">432</properties>
<properties name="TableID">321</properties>
<properties name="Stage">123</properties>
<properties name="Inning"></properties>
<properties name="NameID"></properties>
<properties name="Kind"></properties>
<properties name="Content"></properties>
<properties name="ResultType"></properties>
<properties name="Amount"></properties>
<properties name="Rate"></properties>
<properties name="Balance"></properties>
<properties name="AddTime"></properties>
</Data>";

我使用xml解析的方式解析
public static T get<T>(T tModel)
{

        XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmltest);
XmlElement element = xmlDoc.DocumentElement;
T objModel = Activator.CreateInstance<T>();
foreach (XmlNode childNode in element.ChildNodes)
{
var attr = childNode.Attributes;
if (attr != null)
{
for (int i = 0; i < attr.Count; i++)
{
PropertyInfo info = objModel.GetType().GetProperty(attr[i].Value);
if (info == null) continue;
info.SetValue(objModel, childNode.InnerXml, null);
}
}
else
{
XmlNodeList xmlList = xmlDoc.ChildNodes;
foreach (XmlNode item in xmlList)
{
PropertyInfo pi = objModel.GetType().GetProperty(item.Name);
if (pi == null) continue;
if (!string.IsNullOrEmpty(item.InnerXml.Trim()))
pi.SetValue(objModel, item.InnerXml, null);
}
}
}
return objModel;
}

在第一个循环中,给 info.SetValue(objModel, childNode.InnerXml, null);chidNode.InnerXml是string 类型的,在ObjModel中类型不一直,转换失败,有什么办法能在赋值的时候类型保持一致呢?

回答

感觉用DataSet的ReadXml比较快,毕竟是自带的方法。。。之后将DataTable转成实体类也比较简单

        // 摘要:
        //     使用指定的文件和 System.Data.XmlReadMode 将 XML 架构和数据读入 System.Data.DataSet。
        //
        // 参数:
        //   fileName:
        //     作为读取源的文件名(包括路径)。
        //
        //   mode:
        //     System.Data.XmlReadMode 值之一。
        //
        // 返回结果:
        //     用于读取数据的 XmlReadMode。
        //
        // 异常:
        //   System.Security.SecurityException:
        //     System.Security.Permissions.FileIOPermission 未设置为 System.Security.Permissions.FileIOPermissionAccess.Read。
        public XmlReadMode ReadXml(string fileName, XmlReadMode mode);
以上是C#string类型的xml如何解析成实体类型的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>