日期:2014-05-17  浏览次数:20813 次

查询xml
XML code

<?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</金额>
      <备注></备注>
    </开支>
  </日期>
</经营管理>


如上文件
我需要加载“日期”子节点中有“开支”和“当天结余”数据
并且需要把“开支”节点下同一天的“金额”的数据全部加起来

请问大侠们如何解决?

谢了

------解决方案--------------------
这个实例用linq绝对爽。

C# code

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)));
}

------解决方案--------------------
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)
{