DataSet用法 四 讀寫XML

2022-01-23 14:59:16 字數 4364 閱讀 6978

readxml 提供了只將資料或同時將資料和架構從 xml 文件讀入 dataset 的方式(若要同時讀資料和架構,請使用包括 mode 引數的 readxml 過載之一,並將其值設定為 readschema)。readxmlschema 方法僅讀架構。

對於 writexml 和 writexmlschema 方法也是如此。若要寫入來自 dataset 的 xml 資料或架構和資料兩者,使用 writexml 方法。若要只寫入架構,請使用 writexmlschema 方法。

xml 資料可直接從檔案、stream 物件、xmlwriter 物件或 textwriter 物件中讀取。可以根據需要使用 readxml 的兩組過載方法中的一組。第一組中的四個過載方法只取乙個引數。第二組中的四個過載方法除了取第一組中的乙個引數外另外多取了乙個引數 (xmlreadmode)。

1、readxml 方法的過載形式

dataset.readxml (stream)           使用指定的 system.io.stream 將 xml 架構和資料讀入 dataset。

dataset.readxml (string)            使用指定的檔案將 xml 架構和資料讀入 dataset。

dataset.readxml (textreader)    使用指定的 system.io.textreader 將 xml 架構和資料讀入 dataset。

dataset.readxml (xmlreader)     使用指定的 system.xml.xmlreader 將 xml 架構和資料讀入 dataset。

dataset.readxml (stream, xmlreadmode)   使用指定的 system.io.stream 和 xmlreadmode 將 xml 架構和資料讀入dataset。

dataset.readxml (string, xmlreadmode)     使用指定的檔案和 xmlreadmode 將 xml 架構和資料讀入 dataset。

dataset.readxml (textreader, xmlreadmode)    使用指定的 system.io.textreader 和 xmlreadmode 將 xml 架構和資料讀入dataset。

dataset.readxml (xmlreader, xmlreadmode)  使用指定的 system.xml.xmlreader 和 xmlreadmode 將 xml 架構和資料讀入dataset。

2、readxml 方法的過載形式

writexml(stream)    使用指定的 system.io.stream 為 dataset 寫當前資料。

writexml(textwriter)   使用指定的 textwriter 為 dataset 寫當前資料。

writexml(string)    將 dataset 的當前資料寫入指定的檔案。

writexml(xmlwriter)    將 dataset 的當前資料寫入指定的 xmlwriter。

writexml(stream, xmlwritemode)   使用指定的 system.io.stream 和 xmlwritemode 為 dataset 寫當前資料,還可以選擇寫架構。若要寫架構,請將 mode 引數的值設定為 writeschema。

writexml(textwriter, xmlwritemode)  使用指定的 textwriter 和 xmlwritemode 為 dataset 寫當前資料,還可以選擇寫架構。若要寫架構,請將 mode 引數的值設定為 writeschema。

writexml(string, xmlwritemode)  使用指定的 xmlwritemode 將 dataset 的當前資料寫入指定的檔案,還可以選擇將架構寫入指定的檔案。若要寫架構,請將 mode 引數的值設定為 writeschema。

writexml(xmlwriter, xmlwritemode)   使用指定的 xmlwriter 和 xmlwritemode 為 dataset 寫當前資料,還可以選擇寫架構。若要寫架構,請將 mode 引數的值設定為 writeschema。

3、注意點

(1)如果指定內聯架構,則該內聯架構用於在載入資料之前擴充套件現有的關係結構。如果存在任何衝突(例如,用不同的資料型別定義了同乙個表中的同一列),將引發異常。

(2)如果未指定內聯架構,則在必要時按照 xml 文件的結構通過推理擴充套件關係結構。如果不能通過推理擴充套件架構以公開所有資料,則將引發異常。

(3)如果 dataset 的 xml 架構包含 targetnamespace,則可能無法讀取資料,並且在呼叫 readxml 以載入 xml 中包含具有無限定命名空間的元素的dataset 時,可能會發生異常。若要讀取非限定元素,請按下例的演示,在 xml 架構中將 elementformdefault 設定為「qualified」。

elementformdefault="qualified" 

targetnamespace="" 

xmlns="" 

xmlns:xsd="" 

xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 

(4)如果 dataset 的架構包含同一命名空間中同名但型別不同的元素,則當您嘗試通過指定 xmlreadmode.readschema 將該架構讀入具有readxml 的 dataset 時,將發生異常

4、例項:

(1)writexml()

using system;

using system.collections.generic;

using system.text;

using system.data.sqlclient;

using system.data;

namespace sqlconnection1

class program

private void sqlconnectionf(string source, string select)

//建立連線

sqlconnection con = new sqlconnection(source);

sqldataadapter adapt = new sqldataadapter(select, con);

trycon.open();

console.writeline("connection is successful!");

catch (exception e)

console.writeline("connection error is :", e.tostring());

//建立dataset

dataset ds = new dataset();

//將資料新增到dataset中

adapt.fill(ds, "mytest");

ds.writexml(@"e:\mytest.xml");

console.readline();

con.close();

static void main(string args)

string sou = "server=duanyf\\sqlexpress;" + "initial catalog=master;" + "uid = sa;" + "password = dyf123";

string sel = "select name,number,low,high from dbo.spt_values";

program sqlcon = new program();

sqlcon.sqlconnectionf(sou, sel);

(2)readxml()

using system;

using system.collections.generic;

using system.text;

using system.data.sqlclient;

using system.data;

namespace sqlconnection1

class program

static void main(string args)

dataset dsxml = new dataset();

dsxml.readxml(@"e:\mytest.xml");

console.writeline(" ",dsxml.tables[0].columns[0],dsxml.tables[0].columns[1],

dsxml.tables [0].columns [2],dsxml .tables[0].columns[3]);

foreach (datarow row in dsxml.tables[0].rows)

console.writeline(" ",row[0],row[1],row[2],row[3]);

console.readline();

使用dataset讀寫xml

1.了解dataset載入xml檔案形成的結構 2.讀取,修改,刪除xml節點例項 如果是對於下面的xml檔案載入進ds的話,通過vs的除錯視窗,得到載入形成的ds結構如下 通過上面的觀察,可以看出ds在載入xml檔案時,將節點的屬性 例如genre 全部載入到datarow中。針對上面的xml檔案...

使用DataSet讀寫xml

1.了解dataset載入xml檔案形成的結構 2.讀取,修改,刪除xml節點例項 如果是對於下面的xml檔案載入進ds的話,通過vs的除錯視窗,得到載入形成的ds結構如下 通過上面的觀察,可以看出ds在載入xml檔案時,將節點的屬性全部載入到datarow中。針對上面的xml檔案的讀取,修改操作就...

使用DataSet讀寫xml

1.了解dataset載入xml檔案形成的結構 2.讀取,修改,刪除xml節點例項 如果是對於下面的xml檔案載入進ds的話,通過vs的除錯視窗,得到載入形成的ds結構如下 針對上面的xml檔案的讀取,修改操作就比較簡單,僅僅是對ds的一些操作 關鍵 如下 dataset ds new datase...