對xml資料排序的方法多種多樣, 例如可以把xml資料轉換為datatable,然後進行排序;也可以使用xslt進行排序等等。
這裡介紹如何使用xpathexpression 對xml資料根據某節點或者某乙個attribute進行排序。
例如,我們根據publishdate(發表時間) 節點對以下資料進行倒序排序:
xml version="1.0" encoding="utf-8"
?>
<
articles
>
<
article
>
<
id>1id
>
<
title
>
article1
title
>
<
publishdate
>
2009-06-05 08:45:25
publishdate
>
article
>
<
article
>
<
id>2id
>
<
title
>
article2
title
>
<
publishdate
>
2009-06-07 06:43:16
publishdate
>
article
>
<
article
>
<
id>3id
>
<
title
>
article3
title
>
<
publishdate
>
2009-11-05 01:01:40
publishdate
>
article
>
<
article
>
<
id>4id
>
<
title
>
article4
title
>
<
publishdate
>
2009-08-05 14:01:01
publishdate
>
article
>
<
article
>
<
id>5id
>
<
title
>
article5
title
>
<
publishdate
>
2009-12-05 09:25:34
publishdate
>
article
>
articles
>
xmldocument sortxmldoc(xmldocument xmldoc)
留意selectexpression.addsort(".", xmlsortorder.descending, xmlcaseorder.none, "", xmldatatype.text); 這句**。
xmldatatype只支援text 和 number, 而我們需要排序的字段是datetime型別,顯然排序出來的資料肯定是不對的。
如何解決這個問題呢? 我們發現addsort方法有過載,定義如下:
public abstract void addsort(object expr, icomparer comparer);
我們可以實現自己的comparer, 馬上察看icomparer介面:
namespace
system.collections
}我們只要實現compare介面就可以了,**如下:
public
class
datetimecomparer : icomparer
}然後把selectexpression.addsort(".", xmlsortorder.descending, xmlcaseorder.none, "", xmldatatype.text);
**替換成
datetimecomparer datesort
=new
datetimecomparer();
selectexpression.addsort(".
", datesort);
就大功告成了!
c 中對xml的讀取
節點型別 xmldeclaration 屬性 version 1.0屬性 encoding utf 8 節點型別 whitespace 標記空白內容 節點型別 whitespace 標記空白內容 不是想要的結果啊!是為何?源 如下 讀取 如下 private void button1 click o...
C 中對XML的操作
現在有乙個xml檔案,名稱 bookstore.xml,資料如下 oberon s legacy corets,eva 5.95 現在對這個xml檔案進行如下操作 1 往節點中插入乙個節點 xmldocument doc new xmldocment doc.load bookstore.xml x...
冒泡法排序c語言程式 演算法 冒泡法排序
對於乙個一維的陣列 列表 每個元素都和它旁邊的元素作比較,順序不對就交換位置。第一次處理全部n個元素,最大值將冒泡到陣列末尾位置。第二次處理全部n 1個元素,第三次處理全部n 2個元素。以此類推,每次都將最大值元素放到最右邊的位置。冒泡法的優點是任何時候陣列完全排好序就可以提前退出。來看動態演示 下...