XML檔案匯入 匯出到 DataSet

2022-04-09 10:25:44 字數 4399 閱讀 4959

//

匯出dataset資料到xml檔案

//author:quietwalk

//2010-09-09

public

bool exporttoxml(dataset ds, string strxmlpath)

}catch(sqlceexception ex)

return breturnvalue;

}//xml

資料匯入到 dataset中

//author:quietwalk

//2010-09-09

public

dataset importfromxml(string frompath)

return dsxml;

}說明:

readxml

預設使用

xmlreadmode.auto

方式讀取,這就給大資料量留下了低效率的伏筆。因為如果

xml沒有

scheme

,dataset

就會自己推算

xml的結構,然後再載入,這就是低效的主要原因。讓

dataset

推算不讓我們幫他算,因為

dataset

已經提供了乙個

readxmlschema

方法。dataset

是這樣儲存的:

table(0)

中存放feature

層的資訊,包括

fno等屬性,只有一行;

table(1)

中包括attribute

的資訊包括

ano等屬性,有兩行。如果

attribute

下還有其他子層,就依次放在

table(2)..

中。dataset

讀取資料之後,可以與

datagrid

繫結進行顯示,繫結時可以針對

dataset

中的單個表,也可以一次繫結所有表。

a. 不可以讀取空的檔案

.如果使用

dataset.readxml

載入乙個空的檔案

, 將出現異常

, 因為沒有根元素

.b.

可以讀取沒有

<?xml?>

頭的xml檔案.

你的xml

檔案可以不包含

<?xml version="1.0" encoding="utf-8" ?>

這樣的**

.a. <?xml?>

頭中標記的編碼最好和檔案自身的編碼一致

.在測試檔案中

, 我使用

utf-32

儲存標記為

utf-8

的xml

檔案,

或者反過來都導致了

dataset

讀取檔案異常

. 雖然

, 我並沒有對所有的編碼進行測試

, 而且用

ascii

儲存標記為

utf-8

的xml時,

讀取不會出現異常

, 只不過中文可能會出現亂碼

, 最好還是保持編碼一致吧

. b.

採用ascii

儲存xml

檔案可能出現中文亂碼

.xml

自身是不支援

ascii 的,

雖然讀取沒有異常

, 但你讀取的資訊可能是一堆

"?".

a. 非典型

dataset

如果包含架構

, 並使用預設的

xmlreadmode.auto

或者忽略此選項

, 將只載入

xml檔案中符合架構的資料

.如果你的資料集中包含了架構資訊

, 例如定義了

s1, t1(name string, age int), student(name string, age int), teacher 4

個表,

資料集名稱為

testds,

命名空間為

, 如果乙個的

xml檔案如下

:<?xml version="1.0" encoding="utf-8" ?>

小明12

王老師32

123使用

dataset.readxml

讀取此xml

檔案時,

第乙個student

被讀取到

dataset

的student

表中,

因為xml

中student

對應的列名資料型別和

dataset

架構一致

. 第二個

teacher

不會被讀取

, dataset

架構中雖然包含了表

teacher,

但並沒有定義任何的列, 而

xml中的

teacher

包含了name, age

兩個列.

第三個room

不會被讀取

, 因為架構中不包含表

room.

以上是針對非典型

dataset

測試的結果

, 典型

dataset

應該也是如此

, 有興趣的朋友可以自己測試一下

.b.

非典型dataset

如果不包含架構

, 並使用預設的

xmlreadmode.auto

或者忽略此選項

, 將分析並採用

xml檔案的架構

.如果僅僅使用

new

建立了乙個非典型

dataset,

那麼dataset

中尚未包含架構

. 如果乙個的

xml檔案如下

:<?xml version="1.0" encoding="utf-8" ?>

123123

儲藏室當

dataset

讀取xml

檔案時,

將分析資料集名稱

, 命名空間

,並針對每一條資料進行架構分析

,

我想這一點很重要

, 正如上面的檔案中

, 當讀取到第乙個

room 時,

分析得到需要

room(id)

這樣的表

, 讀取第二個

room 時,

會發現room

表的架構資訊已經存在

, 經過對比發現需要變更架構為

room(id, name).

每一條資料除了架構分析以外

, 還要進行可能的架構更改工作

. 因此

, 在效率上可能不及

a 中說到的情況

.c.

對於xmlreadmode

的其餘選項

, 似乎並不用於

readxml

方法,

或者沒有實際效果

.a.

使用dataset.readxml(new stringreader(string))

可以將xml

字串載入到

dataset.

xml字串應該是合法的

, 如果在字串的

<?xml?>

頭中指定

encoding,

那麼指定任何編碼都可以讀取中文字元

, 也就是說指定對於載入是沒有作用的

.b.

使用dataset.readxml(new memorystream(byte))

可以將byte

陣列表示的

xml載入到

dataset.

對於編碼

, 載入

byte

陣列和載入檔案的要求是類似的

, <?xml?>

頭中標記的編碼應該和

byte

陣列的編碼一致

, 最好不要採用

ascii,

原因在上文中已經提到

. 使用

encoding.getbytes

方法將字串轉化為

byte

陣列時,

編碼應該對照

. 如果

, 使用

encoding.utf8.getbytes,

那麼字串中

<?xml?>

頭應該標記

uft-8,

另外,

也可以不標記

encoding,

結果是相同的

.

XML檔案匯入 匯出到 DataSet

匯出dataset資料到xml檔案 author quietwalk 2010 09 09 public bool exporttoxml dataset ds,string strxmlpath catch sqlceexception ex return breturnvalue xml 資料匯...

Oracle匯出到XML檔案

以下操作在oracle9i 10g版本成功 步驟一 建立存放xml檔案的目錄物件 sql createorreplacedirectoryexp diras opt 注意此目錄要有oracle使用者的寫許可權 步驟二 建立過程生成xml檔案的主過程 sql createorreplaceproced...

將資料匯出到xml,並從xml匯入資料

將資料匯出到 xml 並從 xml 匯入資料 xml本質上是資料,是另一種格式的資料。而 ado.net 就是用來處理資料的。因此通過 dataset 可以非常方便的處理 xml。下面這段程式對如下問題做出了解答 怎樣從dataset得到xml?生成的xml沒有表之間的關係怎麼辦?怎樣把列資料作為子...