问题如下:
比如有如下的一个xml
test.xml
<table>
<list>
<id>1</id>
<points>22</points>
<rank></rank>
</list>
<list>
<id>2</id>
<points>2</points>
<rank></rank>
</list>
<list>
<id>3</id>
<points>32</points>
<rank></rank>
</list>
<list>
<id>4</id>
<points>565</points>
<rank></rank>
</list>
<list>
<id>5</id>
<points>2122</points>
<rank></rank>
</list>
</table>
我希望达到的是根据5个points的值的大小,从大到小在rank节点里插入1,2,3,4,5。
该怎么实现??
解决方法:
try:
XmlDocument doc=new XmlDocument();
doc.Load(@"e:/2.xml");
//创建导航器
XPathNavigator nav=doc.CreateNavigator();
//create XPathExpression
XPathExpression exp=nav.Compile("/table/list");
//排序
exp.AddSort("points",XmlSortOrder.Descending,XmlCaseOrder.None,"",XmlDataType.Number);
//create Iterator
XPathNodeIterator iter=nav.Select(exp);
int i=0;
//循环迭代对象
while(iter.MoveNext())
{
i++;
XPathNavigator copy=iter.Current.Clone();
//移动到points节点
copy.MoveToFirstChild();
copy.MoveToNext();
//转化为xmlnode
XmlNode node=((IHasXmlNode) copy).GetNode();
//设置rank节点
node.ParentNode.ChildNodes[2].InnerText=i.ToString();
}
doc.Save(@"e:/2.xml");