版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第九章 XML讀寫9.1 XML簡介XML與XPathXML,可擴展標(biāo)記語言(Extensible Markup Language),用于描述數(shù)據(jù),以標(biāo)準(zhǔn)化的方式表示文本數(shù)據(jù)。XPath,XML路徑語言(XML Path Language),是描述 XML文檔中位置的語法,用于快速檢索和查詢XML文檔。為什么使用XML結(jié)構(gòu)化的文本,不依賴特殊軟件,易攜帶和傳輸簡化數(shù)據(jù)交換(跨平臺,跨系統(tǒng))數(shù)據(jù)的靈活顯示(通過CSS/XSL描述)本地計算(智能代碼、智能搜索)XML的結(jié)構(gòu)XML文檔主要包括兩部分:序言和元素。序言必須出現(xiàn)在XML文檔開頭,一般包含XML聲明、處理指令和注釋元素以樹型的層次結(jié)構(gòu)排列
2、,指出了XML文檔的結(jié)構(gòu),并包含了文檔的信息,元素可以嵌套在其他元素中每個XML文檔只能有一個頂層元素,稱之為文檔元素(也稱為根元素),文檔元素中包含元素、屬性、文本內(nèi)容、字符、實體引用等一個簡單的XML文件 C#網(wǎng)絡(luò)編程技術(shù) 鄭大民 張雨 450 35.0 標(biāo)記、元素和屬性標(biāo)記是左尖括號()之間的文本。有開始標(biāo)記()和結(jié)束標(biāo)記() 元素是開始標(biāo)記、結(jié)束標(biāo)記和二者間的所有內(nèi)容。 元素包含多個子元素:、 和 等屬性是一個元素的開始標(biāo)記中的名稱-值對。,state 是 元素的屬性。 當(dāng)使用CSS樣式表顯示XML文檔時,瀏覽器不會顯示其屬性及屬性值;當(dāng)使用數(shù)據(jù)綁定或XSL樣式表顯示XML文檔時,則可
3、以訪問其屬性及屬性值。XML文檔規(guī)則(語法)元素是區(qū)分大小寫的每個開始標(biāo)記必須有結(jié)束標(biāo)記 每個文檔必須有且只有一個根元素不包含單一根元素的文檔不管包含什么信息,XML解析器都會拒絕元素必須正確嵌套,不能重疊一個元素不能有相同的屬性值屬性取值要加引號可以使用單引號,也可以使用雙引號,但要始終保持一致XML文檔中常用的實體實體實體引用描述lt(大于)amp&(和)apos'(單引號)quot(雙引號)9.2 .NET中XML的讀寫方法System.Xml:/zh-cn/library/system.xml.aspxXML的讀寫方法基于XmlReader/XmlWriter的讀寫方法(只進
4、訪問)基于XmlDocument的讀寫方法基于DataSet的讀寫方法9.2.1 基于XmlReader/XmlWriter的讀寫類說明XmlReader表示提供對XML數(shù)據(jù)進行快速、非緩存和只進訪問的讀取器XmlTextReader擴展的XmlReader,表示提供對XML數(shù)據(jù)(文本)進行快速、非緩存和只進訪問的讀取器XmlWriter表示一個編寫器,該編寫器提供一種快速、非緩存和只進方式來生成包含XML數(shù)據(jù)的流或文件XmlTextWriter擴展的XmlWriter,表示提供快速、非緩存和只進方式的編寫器,該類可用于生成包含XML數(shù)據(jù)(文本)的流或文件XmlTextReader類的常用屬性
5、屬性說明AttributeCount獲取當(dāng)前節(jié)點上的屬性數(shù)CanReadBinaryContent指示 XmlTextReader 是否實現(xiàn)二進制內(nèi)容讀取方法Depth獲取 XML 文檔中當(dāng)前節(jié)點的深度Encoding獲取文檔的編碼方式EOF指示讀取器是否定位在流的結(jié)尾HasAttributes指示當(dāng)前節(jié)點是否有任何屬性(從XmlReader繼承)HasValue指示當(dāng)前節(jié)點是否可以具有非String.Empty的ValueIsDefault獲取一個值,該值指示當(dāng)前節(jié)點是否是從DTD或架構(gòu)中定義的默認(rèn)值生成的屬性續(xù)上表IsEmptyElement獲取一個值,該值指示當(dāng)前節(jié)點是否為空元素Item
6、當(dāng)在派生類中被重寫時,獲取此屬性的值Name獲取當(dāng)前節(jié)點的本地名稱Namespaces該值指示是否進行命名空間支持NamespaceURI獲取讀取器定位在的節(jié)點的命名空間URINodeType獲取當(dāng)前節(jié)點的類型ReadState獲取讀取器的狀態(tài)。Settings獲取用于創(chuàng)建此XmlTextReader實例的XmlReaderSettings對象Value獲取當(dāng)前節(jié)點的文本值ValueType獲取當(dāng)前節(jié)點的公共語言運行庫(CLR)類型XmlSpace獲取當(dāng)前xml:space范圍XmlTextReader類的常用方法名稱說明Close將ReadState更改為ClosedCreate創(chuàng)建一個新的
7、XmlReader實例GetAttribute獲取屬性的值IsStartElement測試當(dāng)前內(nèi)容節(jié)點是否是開始標(biāo)記MoveToAttribute移動到指定的屬性MoveToContent檢查當(dāng)前節(jié)點是否是內(nèi)容(非空白文本、CDATA、Element、EndElement、EntityReference或EndEntity)節(jié)點。如果此節(jié)點不是內(nèi)容節(jié)點,則讀取器向前跳至下一個內(nèi)容節(jié)點或文件結(jié)尾。它跳過以下類型的節(jié)點:ProcessingInstruction、DocumentType、Comment、Whitespace 或 SignificantWhitespace(從XmlReader繼承
8、)MoveToElement移動到包含當(dāng)前屬性節(jié)點的元素MoveToFirstAttribute移動到第一個屬性MoveToNextAttribute移動到下一個屬性續(xù)上表Read從流中讀取下一個節(jié)點ReadEndElement檢查當(dāng)前內(nèi)容節(jié)點是否為結(jié)束標(biāo)記并將讀取器推進到下一個節(jié)點ReadString將元素或文本節(jié)點的內(nèi)容讀取為一個字符串ReadSubtree返回新的XmlReader實例,此實例可用于讀取當(dāng)前節(jié)點及其所有子節(jié)點ReadToDescendant讓XmlReader前進到下一個匹配的子代元素ReadToFollowing一直讀取,直到找到命名元素ReadToNextSiblin
9、g讓XmlReader 前進到下一個匹配的同級元素ReadValueChunk讀取嵌入在XML文檔中的大量文本流ReferenceEquals確定指定的Object實例是否是相同的實例ResetState 將讀取器的狀態(tài)重置為 ReadState.Initial用XmlTextReader方法讀取XML文件XmlTextReader xr = new XmlTextReader(xmlfilepath);while (!xr.EOF) /讀取每一個xm元素 if (xr.ReadToFollowing(xm) listBox1.Items.Add(xr.ReadElementString();
10、 xr.Close();XmlTextWriter類的常用屬性名 稱說 明BaseStream獲取基礎(chǔ)流對象Formatting指示如何對輸出進行格式設(shè)置Indentation獲取或設(shè)置當(dāng)Formatting設(shè)置為Formatting.Indented時將為層次結(jié)構(gòu)中的每個級別書寫多少IndentCharIndentChar獲取或設(shè)置當(dāng)Formatting設(shè)置為Formatting.Indented時哪個字符用于縮進Namespaces獲取或設(shè)置一個值,該值指示是否進行命名空間支持QuoteChar獲取或設(shè)置哪個字符用于將屬性值引起來Settings獲取用于創(chuàng)建此XmlWriter實例的Xml
11、WriterSettings對象WriteState獲取編寫器的狀態(tài)XmlLang獲取當(dāng)前xml:lang范圍XmlSpace獲取表示當(dāng)前xml:space范圍的XmlSpaceXmlTextWriter類的常用方法名 稱說 明Close關(guān)閉此流和基礎(chǔ)流Create創(chuàng)建一個新的XmlWriter實例Flush將緩沖區(qū)中的所有內(nèi)容刷新到基礎(chǔ)流,并同時刷新基礎(chǔ)流GetType獲取當(dāng)前實例的TypeReferenceEquals確定指定的Object實例是否是相同的實例WriteAttributes當(dāng)在派生類中被重寫時,寫出在XmlReader中當(dāng)前位置找到的所有屬性WriteAttributeSt
12、ring當(dāng)在派生類中被重寫時,寫出具有指定值的屬性WriteChars以每次一個緩沖區(qū)的方式寫入文本W(wǎng)riteComment寫出包含指定文本的注釋 WriteDocType寫出具有指定名稱和可選屬性的DOCTYPE聲明WriteElementString當(dāng)在派生類中被重寫時,寫出包含字符串值的元素WriteEndAttribute關(guān)閉上一個WriteStartAttribute調(diào)用WriteEndDocument關(guān)閉任何打開的元素或?qū)傩圆⒕帉懫髦匦略O(shè)置為Start狀態(tài)續(xù)上表WriteEndElement關(guān)閉一個元素并彈出相應(yīng)的命名空間范圍WriteEntityRef按 &name; 寫出實體
13、引用WriteFullEndElement關(guān)閉一個元素并彈出相應(yīng)的命名空間范圍WriteName寫出指定的名稱,確保它是符合W3CXML1.0建議(/TR/1998/ REC-xml-19980210#NT-Name)的有效名稱WriteNode將所有內(nèi)容從源對象復(fù)制到當(dāng)前編寫器實例WriteProcessingInstruction寫出在名稱和文本之間帶有空格的處理指令,如下所示:WriteStartAttribute書寫屬性的起始內(nèi)容WriteStartDocument書寫版本為“1.0”的XML聲明WriteStartElement寫出指定的開始標(biāo)記WriteString書寫給定的文本內(nèi)
14、容用XmlTextWriter方法新建XML文件XmlTextWriter xw = new XmlTextWriter(path, Encoding.UTF8);/設(shè)置Indenting屬性讓子節(jié)點自動從父節(jié)點縮進xw.Formatting = Formatting.Indented;/開始一個新文檔xw.WriteStartDocument();/開始寫入數(shù)據(jù)(從根元素開始)xw.WriteStartElement(friends);/以下以子元素形式寫入一組xw.WriteStartElement(friend, null);xw.WriteElementString(id, tid);
15、xw.WriteElementString(xm, txm);xw.WriteElementString(qq, tqq);xw.WriteElementString(tel, ttel);xw.WriteElementString(email, tmail);xw.WriteEndElement();/結(jié)束根元素 xw.WriteEndElement();/結(jié)束文檔xw.WriteEndDocument();/關(guān)閉文件xw.Close();9.2.2 使用XmlDocument類讀寫XMLXmlDocument類是XML文檔的.NET表示形式,代表了內(nèi)存中樹狀結(jié)構(gòu)的文檔節(jié)點該類使用DOM(D
16、ocument Object Model 文檔對象模型)來處理xml文檔的,是來自W3C的官方標(biāo)準(zhǔn)System.Xml.XmlDocument:/zh-cn/library/system.xml.xmldocument.aspx用XmlDocument方法讀寫XML文件/用XmlDocument讀取XMLXmlDocument xd = new XmlDocument();xd.Load(xmlfilepath);XmlNodeList xns = xd.GetElementsByTagName(xm);foreach (XmlNode xn in xns) listBox1.Items.Add(xn.InnerTex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報參考:教育元宇宙的應(yīng)用倫理研究
- 2025年嚴(yán)于修身學(xué)習(xí)心得體會(5篇)
- 疫情防護2025年度企業(yè)員工培訓(xùn)與心理咨詢合同3篇
- 二零二五年度城市綠化養(yǎng)護勞務(wù)分包合同書4篇
- 二零二五年度城市住宅出售協(xié)議書(含裝修及家具配置)4篇
- 二零二五年鍋爐維修工程承包與環(huán)保驗收協(xié)議3篇
- 2024手繪藝術(shù)作品拍賣合同協(xié)議3篇
- 安徽省二零二五年度住房租賃市場租賃糾紛處理合同
- 2025年護林員勞動合同書(含森林資源保護培訓(xùn))3篇
- 2025版土地經(jīng)營權(quán)租賃與農(nóng)業(yè)產(chǎn)業(yè)扶貧合同3篇
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專題復(fù)習(xí)
- 光伏項目風(fēng)險控制與安全方案
- 9.2提高防護能力教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 催收培訓(xùn)制度
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認(rèn)證機構(gòu)要求》中文版(機翻)
- 2024年廣東省高考地理真題(解析版)
- 2024高考物理廣東卷押題模擬含解析
- 人教版五年級上冊數(shù)學(xué)簡便計算大全600題及答案
- GB/T 15945-1995電能質(zhì)量電力系統(tǒng)頻率允許偏差
- GB 32311-2015水電解制氫系統(tǒng)能效限定值及能效等級
評論
0/150
提交評論