DataSet用法操作xml
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”。
?
<xsd:schema id="MyDataSet"?
elementFormDefault="qualified"?
targetNamespace="http://www.tempuri.org/MyDataSet.xsd"?
xmlns="http://www.tempuri.org/MyDataSet.xsd"?
xmlns:xsd="http://www.w3.org/2001/XMLSchema"?
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">?
</xsd:schema>
?
(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);
?
try
?
{
?
con.Open();
?
Console.WriteLine("connection is successful!");
?
}
?
catch (Exception e)
?
{
?
Console.WriteLine("connection error is :{0}", 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("{0,-20} {1,-15}{2,-10}{3,-10}",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("{0,-20} {1,-15}{2,-10}{3,-10}",row[0],row[1],row[2],row[3]);
?
}
?
Console.ReadLine();
?
}
?
}
?
}
轉載于:https://www.cnblogs.com/janeaiai/p/4867826.html
總結
以上是生活随笔為你收集整理的DataSet用法操作xml的全部內容,希望文章能夠幫你解決所遇到的問題。