解决方案 »

  1.   

    把这些东西"@MONITORTIME",存到一个数组中strInfo[]。
    遍历<child>的.ChildNodes,得到每个value的值,绑定到cmd            XmlDocument xml = new XmlDocument();
                xml.Load(xmlpath);//加载xml文件
                XmlNodeList list=xml.SelectSingleNode("root").ChildNodes[0].ChildNodes;
                foreach (XmlElement node in list)
                {
                    int i = 0;
                    if (node.Name == "value")
                    {
                        SqlParameter sp = new SqlParameter(strInfo[i], node.InnerText);
                        cmd.Parameters.Add(sp);
                    }
                }代码没测试,大概就是这个意思
      

  2.   

    忘记i++了、、if (node.Name == "value")
                    {
                        SqlParameter sp = new SqlParameter(strInfo[i], node.InnerText);
                        cmd.Parameters.Add(sp);
                        i++;
                    }
      

  3.   

    根据这个节点的Attributes属性获取各个value就可以了
      

  4.   


    严重有问题这个是我自己写的。。值循环到了。。但是绑定的不知道怎么给
     XElement el = XElement.Parse(newString);
                IEnumerable<XElement> elChilds = el.Elements("child");
                #region
                //foreach (XElement e in elChilds)
                //{
                //    Console.WriteLine(e.Name.LocalName);
                //    Console.WriteLine(e.Value);//获取或设置此元素的名称。
                //    Console.WriteLine(e.NextNode);
                //    //Console.WriteLine(e.Name.Namespace);
                //}
                #endregion
                StringBuilder SalerSQL = new StringBuilder();
                StringBuilder InsertSQL = new StringBuilder();
                int count = 0;
                foreach (XElement item in el.Elements("child"))
                {
                    foreach (XElement items in item.Elements("value"))
                    {
                        if (items.Name == "value")
                        {
                            //Console.WriteLine(strinfo);
                            Console.WriteLine(items.Value);
                            #region 绑定参数
                        SqlParameter[] sp ={
                                        new SqlParameter("@MONITORTIME",items.Value),
                                        new SqlParameter("@Station",item.Element("Sstation").Value),
                                        new SqlParameter("@CityName",item.Element("CityName").Value),
                                        new SqlParameter("@AQI",item.Element("AQI").Value),
                                        new SqlParameter("@PM25",item.Element("PM25").Value),
                                        new SqlParameter("@PM10",item.Element("PM10").Value),
                                        new SqlParameter("@SO2",item.Element("SO2").Value),
                                        new SqlParameter("@NO2",item.Element("NO2").Value),
                                        new SqlParameter("@O3",item.Element("O31").Value),
                                        new SqlParameter("@CO",item.Element("CO").Value),
                                        new SqlParameter("@MaxPoll",item.Element("MaxPoll").Value),
                                        new SqlParameter("@LevelIndex",item.Element("LevelIndex").Value),
                                       };
                        SqlParameter[] cityName ={
                                              new SqlParameter("@CityName",item.Element("CityName").Value),
                                             };
                        #endregion
                        }
                       
                        
                    }
      

  5.   


    严重有问题这个是我自己写的。。值循环到了。。但是绑定的不知道怎么给
     XElement el = XElement.Parse(newString);
                IEnumerable<XElement> elChilds = el.Elements("child");
                #region
                //foreach (XElement e in elChilds)
                //{
                //    Console.WriteLine(e.Name.LocalName);
                //    Console.WriteLine(e.Value);//获取或设置此元素的名称。
                //    Console.WriteLine(e.NextNode);
                //    //Console.WriteLine(e.Name.Namespace);
                //}
                #endregion
                StringBuilder SalerSQL = new StringBuilder();
                StringBuilder InsertSQL = new StringBuilder();
                int count = 0;
                foreach (XElement item in el.Elements("child"))
                {
                    foreach (XElement items in item.Elements("value"))
                    {
                        if (items.Name == "value")
                        {
                            //Console.WriteLine(strinfo);
                            Console.WriteLine(items.Value);
                            #region 绑定参数
                        SqlParameter[] sp ={
                                        new SqlParameter("@MONITORTIME",items.Value),
                                        new SqlParameter("@Station",item.Element("Sstation").Value),
                                        new SqlParameter("@CityName",item.Element("CityName").Value),
                                        new SqlParameter("@AQI",item.Element("AQI").Value),
                                        new SqlParameter("@PM25",item.Element("PM25").Value),
                                        new SqlParameter("@PM10",item.Element("PM10").Value),
                                        new SqlParameter("@SO2",item.Element("SO2").Value),
                                        new SqlParameter("@NO2",item.Element("NO2").Value),
                                        new SqlParameter("@O3",item.Element("O31").Value),
                                        new SqlParameter("@CO",item.Element("CO").Value),
                                        new SqlParameter("@MaxPoll",item.Element("MaxPoll").Value),
                                        new SqlParameter("@LevelIndex",item.Element("LevelIndex").Value),
                                       };
                        SqlParameter[] cityName ={
                                              new SqlParameter("@CityName",item.Element("CityName").Value),
                                             };
                        #endregion
                        }
                       
                        
                    }
    我晕,我以为你的"@MONITORTIME"直接就和value对应的,你xml干嘛这么写?
    为什么不<value key="DataTime">2014-03-25 08:00:00</value>这么写?
      

  6.   


    严重有问题这个是我自己写的。。值循环到了。。但是绑定的不知道怎么给
     XElement el = XElement.Parse(newString);
                IEnumerable<XElement> elChilds = el.Elements("child");
                #region
                //foreach (XElement e in elChilds)
                //{
                //    Console.WriteLine(e.Name.LocalName);
                //    Console.WriteLine(e.Value);//获取或设置此元素的名称。
                //    Console.WriteLine(e.NextNode);
                //    //Console.WriteLine(e.Name.Namespace);
                //}
                #endregion
                StringBuilder SalerSQL = new StringBuilder();
                StringBuilder InsertSQL = new StringBuilder();
                int count = 0;
                foreach (XElement item in el.Elements("child"))
                {
                    foreach (XElement items in item.Elements("value"))
                    {
                        if (items.Name == "value")
                        {
                            //Console.WriteLine(strinfo);
                            Console.WriteLine(items.Value);
                            #region 绑定参数
                        SqlParameter[] sp ={
                                        new SqlParameter("@MONITORTIME",items.Value),
                                        new SqlParameter("@Station",item.Element("Sstation").Value),
                                        new SqlParameter("@CityName",item.Element("CityName").Value),
                                        new SqlParameter("@AQI",item.Element("AQI").Value),
                                        new SqlParameter("@PM25",item.Element("PM25").Value),
                                        new SqlParameter("@PM10",item.Element("PM10").Value),
                                        new SqlParameter("@SO2",item.Element("SO2").Value),
                                        new SqlParameter("@NO2",item.Element("NO2").Value),
                                        new SqlParameter("@O3",item.Element("O31").Value),
                                        new SqlParameter("@CO",item.Element("CO").Value),
                                        new SqlParameter("@MaxPoll",item.Element("MaxPoll").Value),
                                        new SqlParameter("@LevelIndex",item.Element("LevelIndex").Value),
                                       };
                        SqlParameter[] cityName ={
                                              new SqlParameter("@CityName",item.Element("CityName").Value),
                                             };
                        #endregion
                        }
                       
                        
                    }
    我也想啊  我组长规定的啊。。我还想序列化呢。。更简单。。没办法啊
    帮我想想怎么弄吧  谢谢你啊
      

  7.   

    刚刚测试过了,是没有问题的,如果你不改你的xml的话,就把strInfo这个数组对应的信息和xm按顺序l对应上。比如DataTime对应"@MONITORTIME",CityName对应"@Station",以此类推。            string[] strInfo=new string[]{"@MONITORTIME","@Station"};
                SqlParameter[] sps=new SqlParameter[10];
                XmlDocument xml = new XmlDocument();
                xml.Load(@"F:\XMLTEST\WindowsFormsApplication1\WindowsFormsApplication1\XMLFile1.xml");//加载xml文件
                XmlNodeList list = xml.SelectSingleNode("root").ChildNodes[0].ChildNodes;
                foreach (XmlElement node in list)
                {
                    int i = 0;
                    if (node.Name == "value")
                    {
                        SqlParameter sp = new SqlParameter(strInfo[i], node.InnerText);
                        sps[i] = sp;
                         i++;
                    }
                }
      

  8.   

    也不能那么说其实说白了就是,"@MONITORTIME"对应第一个value值,"@Station"对应第二个value值这样的。你xml不改动的话,改动strInfo这个数组就好了
      

  9.   


       var rssXDoc = XDocument.Load(@"1.xml");
               var query = rssXDoc.Descendants("value").DescendantsAndSelf().Where(x => x.Name == "value").ToList();
               MessageBox.Show(query[0].Value);
               SqlParameter[] sp ={
                                        new SqlParameter("@MONITORTIME",query[0].Value),
                                        new SqlParameter("@Station",query[1].Value),
                                        new SqlParameter("@CityName",query[2].Value),
                                        new SqlParameter("@AQI",query[3].Value),
                                        new SqlParameter("@PM25",query[4].Value),
                                        new SqlParameter("@PM10",query[5].Value),
                                        new SqlParameter("@SO2",query[6].Value),
                                        new SqlParameter("@NO2",query[7].Value),
                                        new SqlParameter("@O3",query[8].Value),
                                        new SqlParameter("@CO",query[9].Value),
                                        new SqlParameter("@MaxPoll",query[10].Value),
                                        new SqlParameter("@LevelIndex",query[11].Value),
                                       };
      

  10.   


    ..我这个不是本地XML是HTTP上面直接拼接的。。
    XElement el = XElement.Parse(newString);
                IEnumerable<XElement> elChilds = el.Elements("child");我是这么加载的要怎么弄。
      

  11.   

    var rssXDoc = XDocument.Load("http://www.cnblogs.com/....");
      

  12.   

    额好吧
    LINQ的我没做过你看10楼的大神吧、、、