xml基本概念
1.xml基本概念:?
<?xml version='1.0' encoding="GB2312"?> ??????? //XML文檔聲明,放在xml文檔的第一行????
<!-- This file represents a fragment of a book store inventory database --> ?//xml注釋
<bookstore>???????????????????? //根元素,即緊接著文檔聲明后建立的第一個(gè)元素
?<book genre="autobiography" publicationdate="1991" ISBN="1-861003-11-0">?//根元素的子元素
????? <title>The Autobiography of Benjamin Franklin</title>
??? <author>
????? <first-name>Benjamin</first-name>????? //成對(duì)出現(xiàn)的標(biāo)簽(tag),表示一個(gè)元素(element)
????? <last-name>Franklin</last-name>
??? </author>
??? <price>8.99</price>
?</book>
?<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">?//每個(gè)元素可以有多個(gè)屬性
??? <title>The Confidence Man</title>??????????????????? //即genre是book元素的屬性
??? <author>???????????????????????????????? //genre是屬性名,novel是屬性值
????? <first-name>Herman</first-name>??????? //first-name元素的內(nèi)容(content)是Herman
????? <last-name>Melville</last-name>??????? //元素的內(nèi)容可以稱為數(shù)據(jù)、值
??? </author>
??? <price>11.99</price>???? //book元素包含了title、author、price三個(gè)子元素
?</book>?????????????? //book元素還有g(shù)enre、publicationdate、ISBN三個(gè)屬性
</bookstore>
?
注:
一個(gè)元素(element)可以有屬性(attribute)和內(nèi)容(content),也可以沒有屬性或內(nèi)容
一個(gè)元素可以有子元素,也可以沒有子元素
?
?
2.xml訪問模型
xml文件的訪問模型有2種:DOM(文檔對(duì)象模型) 和流模型。
1)DOM模型:
優(yōu)點(diǎn):允許編輯和更新xml文件,可以隨機(jī)訪問文檔中的數(shù)據(jù),可以使用XPath查詢(類似于SQL之于數(shù)據(jù)庫)
缺點(diǎn):需要一次性加載整個(gè)文檔到內(nèi)存中,對(duì)于較大的文檔,會(huì)造成資源浪費(fèi)
?
2)流模型:
流模型訪問xml文檔,使用流的概念,每次迭代xml文檔中的一個(gè)節(jié)點(diǎn),適于處理較大的文檔,消耗內(nèi)存較少。
缺點(diǎn):它是只讀的,僅向前的,不能在文檔中執(zhí)行向后導(dǎo)航操作。
流模型有2種變體:
"推"模型:即使SAX,是一種事件驅(qū)動(dòng)模型。它每發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)就引發(fā)一個(gè)事件,程序員必須編寫事件的處理程序
??? ?? 不靈活,也很麻煩
"拉"模型:就是在遍歷文檔時(shí)把感興趣的文檔部分從讀取器中拉出,不引發(fā)事件,效率更高
???????? .net使用的是基于"拉"模型的實(shí)現(xiàn)方案
?
3).net既支持流模型?- XmlTextReader類和XmlTextWriter類等
????? 又支持DOM模型- XmlNode類等
轉(zhuǎn)載于:https://www.cnblogs.com/zqf620/archive/2007/01/20/625610.html
總結(jié)
- 上一篇: 邮件中文显示为乱码
- 下一篇: IDisposable 接口介绍