foreach (XmlNode xmlNode in xmlNodeList)
{
DataRow dr = dt.NewRow();
foreach (Xml2DataTableMap map in maps) //这是什么?
dr[map.dataTableColumnsName] = Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null); //还有这个
dt.Rows.Add(dr);
}
{
DataRow dr = dt.NewRow();
foreach (Xml2DataTableMap map in maps) //这是什么?
dr[map.dataTableColumnsName] = Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null); //还有这个
dt.Rows.Add(dr);
}
map.dataTableColumnsType这个就是说dataTableColumnsType是map的一个属性
我说的是全部解释下你只解释了map.dataTableColumnsType,这句之前的也要
ht就是你上面new的Hashtable,ht.Add就是在Hashtable里添加,(map.dataTableColumnsName, Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null)这些就是要添加的四个字段
第一个字段:map.dataTableColumnsName,dataTableColumnsName为map的属性
第二个字段:Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText,期中的Convert.ChangeType().InnerText就是把()的东西解析类型成InnerText的类型,xmlNodeName同意时map的一个属性,xmlNode.SelectSingleNode就是在XML文件中找到相应的节点。
第三个字段:map.dataTableColumnsType中dataTableColumnsType同样是map的一个属性
第四个字段:null表示为空
你还发了两个贴啊,耐心点~
{
DataRow dr = dt.NewRow();//创建新行
foreach (Xml2DataTableMap map in maps) //maps是上面你创建的东西吧,迭代Xml2DataTableMap集合,取得map的实例
dr[map.dataTableColumnsName] = Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null);
dt.Rows.Add(dr);
}ConvertChangeType看字面意思就知道了, 返回具有指定SystemType,而且其值等效于System.Object