C 中對XML資料排序 程式法

2021-05-23 15:19:02 字數 2412 閱讀 9891

對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個元素。以此類推,每次都將最大值元素放到最右邊的位置。冒泡法的優點是任何時候陣列完全排好序就可以提前退出。來看動態演示 下...