xml节点循环取值问题

ljcdzc 2012-03-23 08:05:32
页面Grid内获取的批量记录已经在后台转换为了xml,其格式为:<records><record><NAME>name1</NAME><MONEY>100</MONEY></record><record><NAME>name2</NAME><MONEY>200</MONEY></record><record>...</record></records>
现在的需求是1、要取出其中所有name节点的值组成"name1/name2"格式;2、所有MONEY节点求和,代码怎么写?非常感谢
...全文
253 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
来一个XPath版的
static string GetXmlResult2(out int sum)
{
string xml = @"<records><record><NAME>name1</NAME><MONEY>100</MONEY></record><record><NAME>name2</NAME><MONEY>200</MONEY></record><record><NAME>name1</NAME><MONEY>130</MONEY></record><record><NAME>name2</NAME><MONEY>160</MONEY></record></records>";
var doc = new XmlDocument();
doc.LoadXml(xml);
var nodes = doc.SelectNodes("descendant::MONEY").Cast<XmlNode>();
sum = nodes.Sum(n => int.Parse(n.InnerText));
return string.Join("/", nodes.Select((node, i) => node.InnerText + (i % 2 == 1 ? " " : "")).ToArray());
}
机器人 2012-03-23
  • 打赏
  • 举报
回复

var xdoc = XDocument.Parse(xml.OuterXml);

ljcdzc 2012-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fangxinggood 的回复:]
用 linq2xml



C# code
var xdoc = XDocument.Parse("<records><record><NAME>name1</NAME><MONEY>100</MONEY></record><record><NAME>name2</NAME><MONEY>200</MONEY></record><record></record></records>")……
[/Quote]

以上代码可用,不过不好意思,当我用固定字符串换成动态引用后就报错,以下是全部的语句:
string str = e.ExtraParams["Values"];
//(其中str值为:[{"ID":"1","NAME":"name1","MONEY":"100"},{"ID":"2","NAME":"name2","MONEY":"200"}]);
XmlNode xml = JSON.DeserializeXmlNode("{records:{record:" + str + "}}");
当我用你语句换成var xdoc = XDocument.Parse(xml);报错,麻烦你再帮我改改!谢谢
机器人 2012-03-23
  • 打赏
  • 举报
回复
用 linq2xml

var xdoc = XDocument.Parse("<records><record><NAME>name1</NAME><MONEY>100</MONEY></record><record><NAME>name2</NAME><MONEY>200</MONEY></record><record></record></records>");
var names = string.Join("/", xdoc.Descendants("NAME").Select(node => node.Value).ToArray());
var total = 0;
xdoc.Descendants("MONEY").ToList().ForEach(node => total += Convert.ToInt32(node.Value));
Console.WriteLine(names);
Console.WriteLine(total);
porschev 2012-03-23
  • 打赏
  • 举报
回复

下面是个XMLHelper类。。。里面有XML操作的一些方法

http://www.cnblogs.com/zhdonghu/archive/2010/10/16/1852917.html
dalmeeme 2012-03-23
  • 打赏
  • 举报
回复
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"路径");
XmlNodeList names = xmlDoc.SelectNodes(@"//NAME");
StringBuilder sb = new StringBuilder();
foreach (XmlNode name in names)
{
sb.Append(name.InnerText);
sb.Append("/");
}
string r = sb.ToString().TrimEnd('/');
Response.Write(r + "<br/>");
XmlNodeList money = xmlDoc.SelectNodes(@"//MONEY");
int sum = 0;
foreach (XmlNode m in money)
sum += int.Parse(m.InnerText);
Response.Write(sum);
大体上是这样。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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