通過DataSet讀取XML的效率問題

2021-05-21 21:00:31 字數 640 閱讀 3618

一直以來讀取xml都是通過dataset的readxml方法來解決,其他屬性也都沒有使用。在資料量小的時候倒也相安無事,直到今天讀取乙個20m的xml流才發現實在太影響效率了。

預設情況下,readxml預設情況下使用xmlreadmode.auto方式讀取,用以前的作法,由於xml檔案裡沒有包含scheme,dataset會先推斷xml的結構,然後再載入資料。可是對乙個20m的流推斷其結構效率可想而知。如果xmlreadmode採用的是除auto和inferschema(同樣根據資料推斷結構)之外的成員,那麼除了行數會相應增加外,內容都被忽略。

如何解決這個討厭的問題呢,其實也很簡單先給dataset提供schema(readxmlschema方法),xmlreadmode設為ignoreschema即可。經過測試處理時間由幾分鐘提高到幾秒。示例如下:

dataset ds = new dataset();

using (stringreader sr = new stringreader( *** ))

ds.tables[0].beginloaddata();

using (stringreader sr = new stringreader( *** ))//(***)代表xml檔案路徑

ds.tables[0].endloaddata();

用DataSet讀取xml檔案

假如,有乙個這樣的xml檔案 0廣告集錦 239駿篇 flv flvimg 用心演繹.jpg flv 用心演繹.flv flv 用心演繹.flv 01 01 239238 拍攝花絮 flv flvimg 拍攝花絮.jpg flv 拍攝花絮.flv flv 拍攝花絮.flv 04 34 2381 fl...

DataSet讀取指定節點xml資料集

先給出xml檔案樣例 此時我們想通過dataset讀取xml檔案中的節點的資料集,這時我們怎麼做?xml version 1.0 encoding gb2312 config one 1one two 3two three four id 1 name 1 four id 2 name 2 four...

乙個通過DataSet操作XML的類

附件 1 基本思路 其實用dataset操作xml,歸根到底就是對dataset裡的 行,列等進行操作,然後用dataset裡的東西重新寫到xml中,從而實現編輯xml的目的。如果再配合上.xsd檔案的話,那效果更佳。2 程式詳解 1 xml檔案內容 元素,這樣生成.xsd的時候,就會有乙個id段,...