c# xml 中多个节点中的内容相同 怎么提取出来

<trade><num>11</num><sid>92167761887511</sid></trade><trade><num>1</num><sid>92167761... <trade>
<num>11</num>
<sid>92167761887511</sid>
</trade>
<trade>
<num>1</num>
<sid>92167761877511</sid>
</trade>
<trade>
<sid>92074864413469</sid>
</trade>
这样一段xml 其中 有两条数据的sid是相同的 找到具有相同sid的节点的 num 节点 并求和
刚接触 xml 一点都不懂啊 求大神解答 要详细点 最好 有代码 非常感谢了
展开
 我来答
糖果Micro
2012-12-04 · TA获得超过560个赞
知道小有建树答主
回答量:345
采纳率:0%
帮助的人:122万
展开全部
public void GetxmlSum()
{
StringBuilder str_xml = new StringBuilder();
str_xml.Append("<xmls>");
str_xml.Append("<trade><num>10</num><sid>92167761877511</sid></trade>");
str_xml.Append("<trade><num>20</num><sid>92167761877511</sid></trade>");
str_xml.Append("<trade><num>30</num><sid>92074864413469</sid></trade>");
str_xml.Append("<trade><num>50</num><sid>92074864413469</sid></trade>");
str_xml.Append("</xmls>");

Dictionary<string, Int32> dic = new Dictionary<string, Int32>();
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(str_xml.ToString());
System.Xml.XmlNode xmlNode = doc.SelectSingleNode("/xmls");
foreach (System.Xml.XmlNode tradeNode in xmlNode.SelectNodes("trade"))
{
System.Xml.XmlNode sidNode = tradeNode.SelectSingleNode("sid");
string str_sid = sidNode.InnerText;
System.Xml.XmlNode numNode = tradeNode.SelectSingleNode("num");
int str_numa = Convert.ToInt32(numNode.InnerText);
//获取所有key
Dictionary<string, Int32>.KeyCollection keys = dic.Keys;
//if (keys.Count == 0)
// dic.Add(str_sid, str_numa);
if (!dic.ContainsKey(str_sid.ToString()))
{
dic.Add(str_sid, str_numa);
}
else
{
//取出该key 的 value
int valusenum = Convert.ToInt32(dic[str_sid]);
//相加得到最新value
valusenum += str_numa;//最新value
//移除原来的值
dic.Remove(str_sid);
//从新添加最新key和value
dic.Add(str_sid, valusenum);
}
}
foreach (KeyValuePair<string, Int32> kvp in dic)
{
MessageBox.Show("sid为 " + kvp.Key + " 的和 = " + kvp.Value.ToString());
}
}
郁闷西郁闷
2012-12-04 · TA获得超过902个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:180万
展开全部
...刚才的好像也是你发的啊-__#
这个要引用 System.Xml.Linq; System.Xml.XPath;

var doc = XDocument.Load("xml file");
var eles = doc.XPathSelectElements("list/trade[sid=92167761877511]");
var sum = 0;
foreach (var item in eles)
{
sum += Convert.ToInt32(item.Element("num").Value);
Console.WriteLine(item.Element("num").Value);
}
Console.WriteLine(sum);
Console.Read();
追问
。。。比较着急用就多发了几个 大哥果然高人 代码  写这么快 ,我用的时候它说
错误1无法将“void”赋予隐式类型的局部变量是怎么个情况呢 本人 刚学不久 见笑了 谢谢了
追答
你代码贴 出来看看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风之流年xz
2012-12-04
知道答主
回答量:43
采纳率:0%
帮助的人:6.3万
展开全部
DataSet ds = new DataSet("trade的父节点");
ds.ReadXml(FilePath);
Datatable dtXML= ds.Tables["trade"];
变成了datatable就随你去弄了
Xml.Linq也挺方便的,你可以去找找方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baby_horses
2012-12-04
知道答主
回答量:25
采纳率:0%
帮助的人:13.7万
展开全部
使用xml.SelectNodes()方法会得到相同名称节点的一个NodeList,通过这个list来访问把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iuhz
2012-12-04 · TA获得超过111个赞
知道答主
回答量:29
采纳率:100%
帮助的人:23.2万
展开全部
xmlnode.selectNodes(string xpath)
追问
大哥 还能具体点吗 对于 xml 方法 一点也不熟悉  谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式