当前位置: 代码迷 >> C# >> 小妹请问如果不用循环直接取到XML里的值
  详细解决方案

小妹请问如果不用循环直接取到XML里的值

热度:163   发布时间:2016-05-05 05:20:56.0
小妹请教如果不用循环直接取到XML里的值。
怎么不用循环,只需要这个XML文件里最后一个值。
就是Item最后的结果值。


try
            {
                XmlDocument xmlDoc = new XmlDocument();
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreComments = true;//忽略文档里面的注释
                XmlReader reader = XmlReader.Create(@"..\test_data.xml", settings);
                xmlDoc.Load(reader);
                // 得到根节点Point
                XmlNode xnPoint = xmlDoc.SelectSingleNode("Data");
                
               //如何直接取到Item最后一个值。
                foreach (XmlNode xn1 in xnl)
                {
                    XmlElement xe = (XmlElement)xn1;//这代码还报错。还达不到我想要的效果。
                    string id = xe.GetAttribute("ID").ToString();
                    string cpdata = xe.GetAttribute("CPData").ToString().Replace(",", "");
                   string date_time = xe.GetAttribute("Date").ToString();
                }
               
                reader.Close();
            }
            catch (Exception ex)
            {
                
            }


<Data>
  <Item ID="140826032" CPData="2,3,5" Date="2014-08-26 13:41:59" />
  <Item ID="140826033" CPData="1,3,5" Date="2014-08-26 13:51:53" />
  <Item ID="140826034" CPData="1,4,4" Date="2014-08-26 14:02:00" />
  <Item ID="140826035" CPData="3,4,5" Date="2014-08-26 14:12:12" />
  <Item ID="140826036" CPData="1,2,5" Date="2014-08-26 14:22:00" />
  <Item ID="140826037" CPData="2,3,6" Date="2014-08-26 14:32:00" />
  <Item ID="140826038" CPData="2,2,4" Date="2014-08-26 14:42:00" />
  <Item ID="140826039" CPData="2,3,5" Date="2014-08-26 14:52:29" />
  <Item ID="140826040" CPData="1,2,5" Date="2014-08-26 15:02:00" />
  <Item ID="140826041" CPData="1,5,6" Date="2014-08-26 15:12:38" />
.....<!-- 还有很多值--!>
</Data>

------解决思路----------------------
XmlNode xnPoint = xmlDoc.SelectSingleNode("/Data/Item[last()]");
------解决思路----------------------
using System.Linq;

string str1 = @"<Data><Item ID='140826032' CPData='2,3,5' Date='2014-08-26 13:41:59'/><Item ID='140826033' CPData='1,3,5' Date='2014-08-26 13:51:53'/></Data>";
            XElement element1 = XElement.Parse(str1);
            var temp = element1.Descendants().LastOrDefault();   // 取值



------解决思路----------------------
最后一个值,我以为是date属性,哈哈
 XDocument doc = XDocument.Load(System.Windows.Forms.Application.StartupPath + @"\test_data.xml");
 var result =doc.Descendants("Item").LastOrDefault()  ;  
  相关解决方案