查询xml

i08kingdom 2012-09-25 01:17:07

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

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

请问大侠们如何解决?

谢了
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shelly 2012-09-25
  • 打赏
  • 举报
回复
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)
{
机器人 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

楼上的运行错误呀
窗体程序闪一下后立刻消失了
我的代码如下:
C# code

string tablename = "经营管理.da";
XDocument xdoc = XDocument.Load(tablename);

var que = xdoc.Descendants("日期").Where(x => x.El……
[/Quote]
最后加个 Console.Read();
enaking 2012-09-25
  • 打赏
  • 举报
回复
我只能给你思路,首先要会读取xml文档,网上大把,读成list,然后循环加起来就行了。
i08kingdom 2012-09-25
  • 打赏
  • 举报
回复
楼上的运行错误呀
窗体程序闪一下后立刻消失了
我的代码如下:

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);
}
机器人 2012-09-25
  • 打赏
  • 举报
回复
这个实例用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)));
}
hfjfhxfufckg 2012-09-25
  • 打赏
  • 举报
回复
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++)
{
//循环获取改日期下所有节点 筛选你所需要的节点
}
}

109,896

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧