c#中對Xml的若干操作

來源:互聯網
上載者:User

1.XmlSchema

有兩種方式:

1.在Dom模型中執行驗證

//XmlDocument doc = new XmlDocument();

//載入文法
//doc.Schemas.Add("www.ljzforever.com", "xsd.xsd");

//載入文檔
//doc.Load("xml.xml");

//進行驗證,並指定驗證時出錯了後觸發的方法
//doc.Validate(ValidateHandler);

 

2.用參數對象執行驗證

XmlReaderSettings set = new XmlReaderSettings();

//載入文法
set.Schemas.Add("www.ljzforever.com", "xsd.xsd");

//驗證類型
set.ValidationType = ValidationType.Schema;

//指定驗證時出錯了後觸發的方法
set.ValidationEventHandler += ValidateHandler;

//將參數對象載入進閱讀器
XmlReader read = XmlReader.Create("xml.xml", set);

//在載入文檔的過程中進行驗證
while (read.Read()){}

//上面一句或者用:

//XmlDocument doc = new XmlDocument();
//doc.Load(read);

 

///驗證時出錯了後觸發的方法

static void ValidateHandler(object sender, ValidationEventArgs e)
{
    Console.WriteLine(e.Message);
}

 

2.xslt

//載入

XslCompiledTransform tran = new XslCompiledTransform();
tran.Load("xsl.xsl");

//準備流
MemoryStream ms = new MemoryStream();
XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);

//準備參數
XsltArgumentList list = new XsltArgumentList();
list.AddParam("level", "", 3);

//將結果轉入流
tran.Transform("xml.xml",list, xtw);

//將流轉入字串
byte[] buffer = new byte[ms.Length];
ms.Position = 0;
ms.Read(buffer, 0, (int)ms.Length);
Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer));
Console.ReadKey();

 

上面只是通常情況,如果需要將節點以參數的形式傳入xslt的話,就需要引入新的對象了

//用XPathDocument載入文檔

XPathDocument path = new XPathDocument("xml.xml");

//建立導航
XPathNavigator nav = path.CreateNavigator();

//在導航內選擇結點集,是xpath文法
XPathNodeIterator iter = nav.Select("//emp");

//將結點集匯入參數值

list.AddParam("level", "", iter);

 

3.關於XmlDataDocument對象

通過XmlDataDocument對象,我們可以與DataSet建立關係,但是在我研究中發現,實際上在這兩個對象之間DataSet才是主類,XmlDataDocument主要是起來一個配合作用。(哈哈,個人意件),因為無論任何時候,都要求DataSet載入Schema(架構),不然就不可用啊!

有三種方式建立兩者的關係

a.先建立DataSet,並載入xml文檔,然後在XmlDataDocument的建構函式中建立關係:

DataSet ds = new DataSet()

ds.ReadXml("xml.xml");

XmlDataDocument doc = new XmlDataDocument (ds)

b.先建立DataSet,並載入xml架構,然後在XmlDataDocument的建構函式中建立關係,最後在XmlDataDocument中載入文檔:

DataSet ds = new DataSet()

ds.ReadXmlSchema("xsd.xsd");

XmlDataDocument doc = new XmlDataDocument (ds)

doc .Load("xml.xml");

c.先建立XmlDataDocument,然後建立DataSet,並將XmlDataDocument的DataSet屬性賦給它,然後DataSet載入架構,最後XmlDataDocument載入文檔

XmlDataDocument doc = new XmlDataDocument (ds)

DataSet ds = data.DataSet;
ds.ReadXmlSchema("ds.xsd");
data.Load("xml.xml");

 

總之,不管怎樣建立,DataSet都要求有架構,且不能晚於文檔載入,必須同時載入或先載入!

通過引入XmlDataDocument,使DataSet中的資料既可以用ado.net的方式操作,又可以用xml的Dom模型或流模型操作,增強了操作的靈活性。

 

注意:

1.推存使用第三種構造方式,因為這樣可以必免 XML 文檔的失真。如果 DataSet 是使用 ReadXml 從 XML 檔案中填充的,那麼當使用 WriteXml 以 XML 文檔形式寫回資料時,資料可能大大不同於初始的 XML 文檔。這是因為 DataSet 不維護 XML 文檔中的格式設定(如空白)或分層資訊(如元素順序)。DataSet 也不包含 XML 文檔中因為不匹配 Dataset 架構而被忽略的元素。通過使 XmlDataDocumentDataSet 同步,可以在 XmlDataDocument 中維護初始 XML 文檔的格式設定和分層元素結構,而 DataSet 僅包含適用於 DataSet 的資料和架構資訊。

2.DataSet都要求有架構,且不能晚於文檔載入,必須同時載入或先載入!上面己說明的很詳細了

3.所有使用XmlDocument的地方都可以使用XmlDataDocument ,因為XmlDataDocument 是對XmlDocument的擴充

 

 

參考的文章:

XmlDataDocument 與Dataset

http://software.it168.com/manual/asp.net/4-4-6.htm

使 DataSet 與 XmlDataDocument 同步的樣本(節點和欄位對應的編程)

http://www.cnblogs.com/cuihongyu3503319/archive/2007/01/07/614072.html

高手進來談一下XmlDataDocument類和DataSet類的區別看看

http://topic.csdn.net/t/20040920/02/3389023.html

XmlDocument 與 XmlDataDocument 的區別

http://www.cftea.com/c/2008/07/Q1DY3YTFNQ8V95LB.asp

XmlDataDocument 問題

http://topic.csdn.net/t/20050603/07/4055616.html

解析.Net架構下的XML編程技術

http://blog.csdn.net/qdzx2008/archive/2006/04/17/666566.aspx

請教XmlDataDocument的問題

http://topic.csdn.net/t/20050420/14/3952062.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.