DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 通過DataSet讀取XML的效率問題
通過DataSet讀取XML的效率問題
編輯:XML詳解     
直以來讀取xml都是通過DataSet的ReadXML方法來解決,其他屬性也都沒有使用。在數據量小的時候倒也相安無事,直到今天讀取一個20M的XML流才發現實在太影響效率了。

    默認情況下,ReadXML缺省情況下使用XmlReadMode.Auto方式讀取,用以前的作法,由於xml文件裡沒有包含Scheme,DataSet會先推斷xml的結構,然後再加載數據。可是對一個20M的流推斷其結構效率可想而知。如果XMLReadMode采用的是除Auto和InferSchema(同樣根據數據推斷結構)之外的成員,那麼除了行數會相應增加外,內容都被忽略。

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

 1    DataSet ds = new DataSet();
 2            using (StringReader sr = new StringReader( xxx ))
 3            {
 4                ds.ReadXMLSchema(sr);
 5            }
 6            ds.Tables[0].BeginLoadData();
 7
 8
 9            using (StringReader sr = new StringReader( xxx ))
10            {
11                ds.ReadXml(sr, XMLReadMode.IgnoreSchema);
12            }
13            ds.Tables[0].EndLoadData();

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved