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

判断节点,加载xml数据
XML code

<?xml version="1.0" encoding="utf-8"?>
<经营管理>
  <日期 date="2012/9/24">
    <流动资金>100</流动资金>
    <开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
  </日期>
<日期 date="2012/9/25">
    <当天结余>5000</当天结余>
    <流动资金>100</流动资金>
<开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
<开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
<开支>
      <项目>原材料</项目>
      <金额>200</金额>
      <备注></备注>
    </开支>
  </日期>
</经营管理>


C# code

var que = from c in xdoc.Descendants("经营管理").Elements("日期")
                          select c;
foreach (var item in que)
                    {
                        listItem = new ListViewItem();
                        listItem.Text = item.cc.Attribute("date").Value;
                        listItem.SubItems.Add((Convert.ToInt32(item.cc.Element("当天结余").Value) - Convert.ToInt32(item.cc.Element("流动资金").Value)).ToString());
                        listView1.Items.Add(listItem);
                        }
                    }



因为有的“日期”下面没有“当天结余”的节点
所以生成错误

请问怎么判断是不是有“当天结余”这个节点
并把有这个节点的数据显示出来呀

叩谢

在线等

------解决方案--------------------
加一个 Where 就搞定了。或者在foreach里判断。


C# code
var dataOfDate = xdoc.Descendants("日期").Where(x => x.Element("当天结余") != null);
foreach (var item in dataOfDate)
    Console.WriteLine(item.Element("当天结余").Value);