foreach (XmlNode xmlNode in xmlNodeList)
                    {
                        Hashtable ht = new Hashtable();
                        foreach (Xml2DataTableMap map in maps)
                            ht.Add(map.dataTableColumnsName, Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null));
                        DataRow dr = dt.NewRow();
                        dr["CombinColumns"] = ht;
                        dt.Rows.Add(dr);
                    }
其中ht.Add(map.dataTableColumnsName, Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null));这一段时什么意思?

解决方案 »

  1.   

    把map增加到哈希表里
    map.dataTableColumnsName是哈希表键名称
    Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null)是哈希表键值Convert.ChangeType转换类型,将xmlNode.SelectSingleNode(map.xmlNodeName).InnerText转换成map.dataTableColumnsType类型
      

  2.   

    ht :HashTable
    map.dataTableColumnsName: datatable的列名
    Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null):把xml节点的内容转换成列的类型这句是把xml的内容添加到hashtable中
      

  3.   

    ht.Add(map.dataTableColumnsName, Convert.ChangeType(xmlNode.SelectSingleNode(map.xmlNodeName).InnerText, map.dataTableColumnsType, null));
    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表示为空