<?xml version="1.0" encoding="utf-8"?>
<经营管理>
<日期 date="2012/9/23">
    <流动资金>100</流动资金>
  </日期>
  <日期 date="2012/9/24">
    <流动资金>100</流动资金>
    <开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
  </日期>
<日期 date="2012/9/25">
    <当天结余>5000</当天结余>
    <流动资金>100</流动资金>
<开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
<开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
<开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
  </日期>
</经营管理>如上文件
我需要加载“日期”子节点中有“开支”和“当天结余”数据
并且需要把“开支”节点下同一天的“金额”的数据全部加起来请问大侠们如何解决?谢了

解决方案 »

  1.   

    XmlDocument xmlDoc= new XmlDocument();
    xmlDoc.load(String path);
    XmlNode root = xmlDoc.DocumentElement;
    XmlNode dataNode=root.SelectSingleNode(string path);//日期节点 以及对应属性
    XmlNodeList node=dataNode.SelectNodes(string Path);
    if(node!=null&&node.Count>0)
    {
       for(int i=0;i<node.Count;i++)
       {
           //循环获取改日期下所有节点 筛选你所需要的节点
       }
    }
      

  2.   

    这个实例用linq绝对爽。
    var dataOfDate = xdoc.Descendants("日期").Where(x => x.Element("当天结余") != null && x.Element("开支") != null);
    foreach (var item in dataOfDate)
    {
        Console.WriteLine("当天结余:{0}", item.Element("当天结余").Value);
        Console.WriteLine("开支:{0}", item.Descendants("开支").Sum(x => Convert.ToDecimal(x.Element("金额").Value)));
    }
      

  3.   

    楼上的运行错误呀
    窗体程序闪一下后立刻消失了
    我的代码如下:string tablename = "经营管理.da";
                    XDocument xdoc = XDocument.Load(tablename);                var que = xdoc.Descendants("日期").Where(x => x.Element("当天结余") != null && x.Element("开支") != null);
                    foreach (var item in que)
                    {
                        listItem = new ListViewItem();
                        listItem.Text = item.Attribute("date").Value;
                        listItem.SubItems.Add((Convert.ToInt32(item.Element("当天结余").Value) - Convert.ToInt32(item.Element("流动资金").Value)).ToString());
                        listItem.SubItems.Add((item.Descendants("开支").Sum(x => Convert.ToDecimal(x.Element("金额").Value))).ToString());
                        listView1.Items.Add(listItem);
                    }
      

  4.   

    我只能给你思路,首先要会读取xml文档,网上大把,读成list,然后循环加起来就行了。
      

  5.   

    XmlDocument xm1 = new XmlDocument();//创建XML文件
      string path = AppDomain.CurrentDomain.BaseDirectory + "userinfo.xml";
      xm1.Load(path);
      bool LoginRight = false;  XmlNode xn1 = xm1.SelectSingleNode("userinfo/admin[@text='" + TextBox1.Text + "']");
      if (xn1 != null)
      {