Xml中查找最大值!

myghy 2003-03-17 02:54:49
请如何在Xml中查找出最大的数据,
能用类似SQL语句(Select Max(bh) From Table)查出吗?
...全文
144 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-03-19
  • 打赏
  • 举报
回复
http://www.w3schools.com/xpath/
xxcw 2003-03-19
  • 打赏
  • 举报
回复
什么地方有这方面的说明,学习学习!
saucer 2003-03-19
  • 打赏
  • 举报
回复
XmlNode node = xmldoc.SelectSingleNode("ROOT/Bh[Id='10001']/List/QTY[not(. < ../..//QTY)]");

"../..//QTY" says, find the grand-parent's all descendant QTYs , this grand-parent is Bh node with its child Id node = '10001'

XPath is very context dependent, you have to know your xml
myghy 2003-03-19
  • 打赏
  • 举报
回复
象这样的行吗?要取出Id='10001'中的QTY最大值,怎么取啊?
<ROOT>
<Bh>
<Id>10001</Id>
<Name>aaa</Name>
<List>
<Xh>1001</Xh>
<QTY>12</QTY>
</List>
<List>
<Xh>1002</Xh>
<QTY>1</QTY>
</List>
<List>
<Xh>1002</XH>
<QTY>25</QTY>
</List>
<List>
<Xh>1003</Xh>
<QTY>1</QTY>
</List>
<List>
<Xh>1004</Xh>
<QTY>900</QTY>
</List>
</Bh>
</ROOT>
myghy 2003-03-19
  • 打赏
  • 举报
回复
To 思归大侠
XMl的格式必须象你这样规范才能使用吗?
csdnshao 2003-03-18
  • 打赏
  • 举报
回复
用xpath的max()函数
saucer 2003-03-18
  • 打赏
  • 举报
回复
XmlNode node = xmldoc.SelectSingleNode("ROOT/Bh[Id='10001']/List/QTY[not(. < ../QTY)]");
saucer 2003-03-18
  • 打赏
  • 举报
回复
if your XML is very regular, read it into a DataSet and use DataView's RowFilter property


DataView dv = new DataView(ds.Tables["sales"]);
dv.RowFilter = "QTY = MAX(QTY)";
for (int i=0; i < dv.Count; i++)
System.Console.WriteLine(dv[i]["QTY"]);

大健 2003-03-18
  • 打赏
  • 举报
回复
学习
myghy 2003-03-18
  • 打赏
  • 举报
回复
如果要找Id='10001'中QTY的最大值,怎么写?
saucer 2003-03-18
  • 打赏
  • 举报
回复
try

XmlNode node = xmldoc.SelectSingleNode("ROOT/Bh/List/QTY[not(. < ../QTY)]");
saucer 2003-03-18
  • 打赏
  • 举报
回复
because your xml is invalid?


<ROOT>
<Bh>
<Id>10001</Id>
<Name>aaa</Name>
<List>
<QTY>12</QTY>
<QTY>1</QTY>
<QTY>25</QTY>
<QTY>1</QTY>
<QTY>900</QTY>
<QTY>Text</QTY>
</List>
</Bh>
</ROOT>

myghy 2003-03-18
  • 打赏
  • 举报
回复
不对啊!Node为nothing?
myghy 2003-03-18
  • 打赏
  • 举报
回复

如果要找确认第二层下第三层的最大值,怎么写?

<ROOT>
<Bh>
<Id>10001<Id>
<Name>aaa</Name>
<List>
<QTY>12</QTY>
<QTY>1</QTY>
<QTY>25</QTY>
<QTY>1</QTY>
<QTY>900</QTY>
<QTY>Text</QTY>
</list>
</Bh>
...
</ROOT>
saucer 2003-03-18
  • 打赏
  • 举报
回复
max() is not supported in XSLT 1.0

try

1. TestMax.xml:
<ROOT>
<QTY>12</QTY>
<QTY>1</QTY>
<QTY>25</QTY>
<QTY>1</QTY>
<QTY>900</QTY>
<QTY>Text</QTY>
</ROOT>

2. TestMax.cs:

using System;
using System.Xml;

class TestMax
{
public static void Main(string[] args)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("TestMax.xml");
XmlNode node = xmldoc.SelectSingleNode("//QTY[not(. < //QTY)]");
if (node != null)
Console.WriteLine(node.InnerText);
}
}
myghy 2003-03-18
  • 打赏
  • 举报
回复
to csdnshao(飞雪连天)
我翻了一下XML的书,在Xpath中没找到有关max()函数啊!
请问怎么写啊?谢谢
xxcw 2003-03-17
  • 打赏
  • 举报
回复
to baitianhai(hong)
xpath怎么用啊?
myghy 2003-03-17
  • 打赏
  • 举报
回复
没用过,怎么写啊?
baitianhai 2003-03-17
  • 打赏
  • 举报
回复
用xpath来查询
myghy 2003-03-17
  • 打赏
  • 举报
回复
难道只能循环搜索吗?没有更简单点吗?
加载更多回复(2)

62,074

社区成员

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

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

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

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