首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

200分解决一个XML排序有关问题`麻烦大家了`解决立刻结帖

2012-01-12 
200分解决一个XML排序问题`麻烦大家了`解决立刻结帖protectedvoidPage_Load(objectsender,EventArgse){Str

200分解决一个XML排序问题`麻烦大家了`解决立刻结帖

        protected   void   Page_Load(object   sender,   EventArgs   e)
        {


                StringBuilder   unsorted   =   new   StringBuilder();
                StringBuilder   sorted   =   new   StringBuilder();
                string   xpath   =   "//Title ";
                XPathDocument   doc   =   new   XPathDocument(Server.MapPath( "~/test.xml "));
                XPathNavigator   nav   =   doc.CreateNavigator();
                XPathNodeIterator   nodeIter1   =   nav.Select(xpath);
                while   (nodeIter1.MoveNext())
                {
                        unsorted.Append(nodeIter1.Current.GetAttribute( "publishtime ",   " ")   +   " <br/> ");
                }
                Label1.Text   =   unsorted.ToString();

                XPathExpression   exp   =   nav.Compile( "//Title[@publishtime] ");
                exp.AddSort( "publishtime ",   XmlSortOrder.Descending,   XmlCaseOrder.None,   " ",   XmlDataType.Number);//按时间倒序
                XPathNodeIterator   nodeIter2   =   nav.Select(exp);
                while   (nodeIter2.MoveNext())
                {
                        sorted.Append(nodeIter2.Current.GetAttribute( "publishtime ",   " ")   +   " <br/> ");
                }
                Label2.Text   =   sorted.ToString();   //排序后的所有数据(就是xml文件Title节点的所有属性)需要填充到一个gridview
        }

test.xml
<?xml   version= "1.0 "   encoding= "utf-8 "?>
<TitleCollection>
    <Title   position= "1 "   id= "424 "   title= "aaaadsa "   publishtime= "2007-8-6   0:00:00 "   pic= "~/images/nopig.gif "   informationtype= "测试 "   brief= "dasdas ">
        <contentCollection   content= "dfsfsdfs "   />
    </Title>
    <Title   position= "2 "   id= "425 "   title= "aa "   publishtime= "2007-7-31   0:00:00 "   pic= "~/images/nopig.gif "   informationtype= "新闻 "   brief= "aa ">
        <contentCollection   content= "aaa "   />
    </Title>
</TitleCollection>

今天已经被弄晕了``只有麻烦大家了``

[解决办法]
如果你想把Xml数据显示在GridView中
不必这么麻烦!

[解决办法]
DataSet ds = new DataSet();
ds.ReadXml(您的XML路径);
[解决办法]
例子

public class DTSort : IComparer
{
int IComparer.Compare(Object x, Object y)
{
return DateTime.Compare(Convert.ToDateTime(y),Convert.ToDateTime(x));

}
}

protected void Page_Load(object sender, EventArgs e)
{
StringBuilder unsorted = new StringBuilder();
StringBuilder sorted = new StringBuilder();
string xpath = "//Title ";
XPathDocument doc = new XPathDocument(Server.MapPath( "~/test.xml "));
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator nodeIter1 = nav.Select(xpath);
while (nodeIter1.MoveNext())
{
unsorted.Append(nodeIter1.Current.GetAttribute( "publishtime ", " ") + " <br/> ");
}
Label1.Text = unsorted.ToString();

XPathExpression exp = nav.Compile( "//Title[@publishtime] ");
DTSort s = new DTSort();
exp.AddSort( "@publishtime ", s);//按时间倒序
XPathNodeIterator nodeIter2 = nav.Select(exp);
while (nodeIter2.MoveNext())
{
sorted.Append(nodeIter2.Current.GetAttribute( "publishtime ", " ") + " <br/> ");
}
Label2.Text = sorted.ToString();
}

[解决办法]
mark!
[解决办法]
up
[解决办法]
看看先
[解决办法]
//
//用XPath实现列的排序
//
XmlDocument doc=new XmlDocument();
doc.Load(@ "E:\test.xml ");
//创建导航器
XPathNavigator nav=doc.CreateNavigator();
//create XPathExpression
XPathExpression exp=nav.Compile( "/ee/message ");
//对Size 列进行降序排列
///--------------------
///如要对多列进行排序,须用XPath中的concat这个函数,
///.eg:对tile , lastname2列进行排序:
///exp.AddSort( "concat(title, ', '),lastname) ",.........);
///其中的,是分隔作用
///---------------------
exp.AddSort( "size ",XmlSortOrder.Descending,XmlCaseOrder.None, " ",XmlDataType.Number);
//create Iterator
XPathNodeIterator iter=nav.Select(exp);
//循环迭代对象
while(iter.MoveNext())
{
XPathNavigator copy=iter.Current.Clone();
//write the size child node
copy.MoveToFirstChild();
copy.MoveToNext();
copy.MoveToNext();
Console.WriteLine(copy.Value);
}

==============================================================
Xml文件:

<?xml version= "1.0 " ?>
<ee>
<message>
<time> 2004-8-24 11:13:53 </time>
<offset> 0 </offset>
<size> 11297 </size>
</message>
<message>
<time> 2004-8-24 11:13:53 </time>
<offset> 11297 </offset>
<size> 11325 </size>
</message>
<message>
<time> 2004-8-24 11:13:53 </time>


<offset> 22622 </offset>
<size> 11309 </size>
</message>
<message>
<time> 2004-8-24 11:13:53 </time>
<offset> 33931 </offset>
<size> 11327 </size>
</message>
</ee>
--------------------------
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 ");
==============================
xml file:

<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>

热点排行