六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在.NET Framework中簡單處理XML數據(4-1)

[摘要]  XmlTextWriter類   用在本節中的方法創建XML文檔顯然并不困難。多年以來,開發者都是通過在緩存在連接一些字符串,連接好以后再把緩存中字符串輸出到文件的方式來創建XML文檔。但是以這種方式創建XML文檔的方法只有在你保證字符串中不存在任何細小的錯誤的時候才有效。.NET Frame...
  XmlTextWriter類

  用在本節中的方法創建XML文檔顯然并不困難。多年以來,開發者都是通過在緩存在連接一些字符串,連接好以后再把緩存中字符串輸出到文件的方式來創建XML文檔。但是以這種方式創建XML文檔的方法只有在你保證字符串中不存在任何細小的錯誤的時候才有效。.NET Framework通過用XMLwriter提供了更好的創建XML文檔的方法。

  XML Writer類以只前(forward-only)的方式輸出XML數據到流或者文件中。更重要的是,XML Writer在設計時就保證所有的XML數據都符合W3C XML 1.0推薦規范,你甚至不用擔心忘記寫閉標簽,因為XML Writer會幫你寫。XmlWriter是所有 XML writer的抽象基類。.NET Framework只提供唯一的一個writer 類----XmlTextWriter類。

  我們先來看看XML writers和舊的writers的不同點,下面的代碼保存了一個string型的數組:

StringBuilder sb = new StringBuilder("");

sb.Append("");

foreach(string s in theArray) {

sb.Append("

sb.Append(s);

sb.Append("\"/>");

}

sb.Append("
");

  代碼通過循環取出數據中的元素,寫好標簽文本并把它們累加到一個string中。代碼保證輸出的內容是格式良好的并且注意了新行的縮進,及支持命名空間。當創建的文檔結構比較簡單時,這種方法可能不會有錯誤。然而,當你要支持處理指令,命名空間,縮進,格式化以及實體的時候,代碼的數量就成指數級增長,出錯的可能性也隨之增長。

  XML writer寫方法功能對應每個可能的XML節點類型,它使創建xml文檔的過程更符合邏輯、更少的信賴于繁瑣的標記語言。圖六演示了怎么樣用XmlTextWriter類的方法來連接一個string數據。代碼很簡潔,用XML writer的代碼更容易讀、結構更好。

Figure 6 Serializing a String Array

void CreateXmlFileUsingWriters(String[] theArray, string filename)

{

// Open the XML writer (用默認的字符集)

XmlTextWriter xmlw = new XmlTextWriter(filename, null);

xmlw.Formatting = Formatting.Indented;



xmlw.WriteStartDocument();

xmlw.WriteStartElement("array");

foreach(string s in theArray)

{

xmlw.WriteStartElement("element");

xmlw.WriteAttributeString("value", s);

xmlw.WriteEndElement();

}

xmlw.WriteEndDocument();



// Close the writer

xmlw.Close();

}

  然而XML writer并不是魔術師----它不能修復輸入的錯誤。XML writer不會檢查元素名和屬性名是否有效,也不保證被用的任何的Unicode字符集適合當前架構的編碼集。如上所述,為了避免輸出錯誤,必須要杜絕非XML字符。但是writer沒有提供這種方法。

  另外,當創建一個屬性節點時,Writer不會檢驗屬性節點的名稱是否與已存在的元素節點的名稱相同。最后,XmlWriter類不是一個帶驗證的Writer類,也不保證輸出是否符合schema或者DTD。在.NET Framework中帶驗證的writer類目前來說還沒有提供。但是在我寫的《Applied XML Programming for Microsoft .NET (Microsoft Press®, 2002)》書中,我自己寫了一個帶驗證的Writer組件。你可以到下面的網址去下載源碼:http://www.microsoft.com/MSPress/books/6235.asp.

  圖七列出了XML writer的一些狀態值(state)。這些值都源于WriteState枚舉類。當你創建一個Writer,它的初始狀態為Start,表示你將要配置該對象,實際上writer沒有開始。下一個狀態是Prolog,該狀態是當你調用WriteStartDocument方法開始工作的時候設置的。然后,狀態的轉換就取決于你的寫的文檔及文檔的內容了。Prolog狀態一直保留到當你增加一個非元素節點時,例如注釋元素,處理指令及文檔類型。當第一個節點也就是根節點寫完后,狀態就變為Element。當你調用WriterStartAtribute方法時狀態轉換為Attribute,而不是當你調用WriteAtributeString方法寫屬性時轉換為該狀態。如果那樣的話,狀態應該是Element。當你寫一個閉標簽(>)時,狀態會轉換成Content。當你寫完文檔后,調用WriteEndDocument方法,狀態就會返回為Start,直到你開始寫另一個文檔或者把Writer關掉。




主站蜘蛛池模板: 天天爱夜夜做 | 青娱乐91视频 | 日韩大片观看网址 | 日本一本在线视频 | 伊人久久大香线蕉免费视频 | 在线看片欧美 | 亚洲欧美v视色一区二区 | 青娱乐最新地址 | 日韩中文字幕免费观看 | 中文字幕不卡免费视频 | 青青久视频 | 最新国产福利在线观看 | 日韩视频精品在线 | 在线亚洲日产一区二区 | 日韩高清在线播放不卡 | 欧洲毛片 | 中文字幕资源在线 | 日本高免费观看在线播放 | 伊人365| 亚洲天堂在线观看视频 | 欧美一区2区三区4区贰佰公司 | 天狼影院伦理片在线bd观看 | 亚洲欧美v | 日本人欧美xx | 日韩高清一级毛片 | 中文字幕日韩精品一区口 | 中文字幕欧美视频 | 婷婷丁香激情五月 | 亚洲精品中文字幕乱码影院 | 亚洲操片 | 天天干天天插天天操 | 亚洲午夜久久久久中文字幕 | 欧美一级网 | 天天爱夜夜 | 亚洲精品 国产 日韩 | 亚洲精品高清视频 | 日韩丝袜亚洲国产欧美一区 | 一级做a爰片性色毛片思念网 | 性久久久久久久久久久 | 日韩三极 | 中文在线免费看视频 |