*************请问关于xquery的问题

gamecoder001 2008-11-16 09:29:35
<employee>
<Sname>张三</Sname>
<V1>1</V1>
<V2>21</V2>
<V3>43</V3>
<V4>32</V4>
<V5>8</V5>
<V6>1</V6>
</employee>
<employee>
<Sname>李四</Sname>
<V1>54</V1>
<V2>61</V2>
<V3>23</V3>
<V4>32</V4>
<V5>2</V5>
<V6>2</V6>
</employee>
<employee>
<Sname>张五</Sname>
<V1>23</V1>
<V2>21</V2>
<V3>23</V3>
<V4>22</V4>
<V5>5</V5>
<V6>2</V6>
</employee>
<employee>
<Sname>张六</Sname>
<V1>23</V1>
<V2>52</V2>
<V3>16</V3>
<V4>33</V4>
<V5>1</V5>
<V6>3</V6>
</employee>

我一个这样的xml文档

我想求出对于每一个sname 后面的v1-v6的求和
请问应该怎么做啊
得到的结果大概是这样的
<emp Sname="" Amount="" />
...
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengxj85 2008-11-18
  • 打赏
  • 举报
回复
Mark
孙晓军82 2008-11-18
  • 打赏
  • 举报
回复
sorry!上面的xpath写得有错误.

如果c#操作的话,
XPathDocument doc = new XPathDocument("employees.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expression = nav.Compile("sum(./node()[starts-with(name(), 'V')]/text()) ");
XPathNodeIterator iter = nav.Select("/employees/employee");
if (iter.MoveNext())
{
object obj = iter.Current.Evaluate(expression);
int sum = Convert.ToInt32(obj); //result is 106.即是张三下面所有v开头节点数值得和。
}

如果用xsl的话就是。
<xsl:value-of select="sum(./node()[starts-with(name(), 'V')]/text())"/>
就可以了,注意下相对路径。
gamecoder001 2008-11-16
  • 打赏
  • 举报
回复
能写出详细的代码吗
gamecoder001 2008-11-16
  • 打赏
  • 举报
回复
孙晓军82 2008-11-16
  • 打赏
  • 举报
回复
假设当前处理的是employee节点
xpath "sum(./node()[starts-with('V')]/text())";
cyy1981 2008-11-16
  • 打赏
  • 举报
回复
用户xpath取出值来加就可以了吧

62,266

社区成员

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

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

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

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