武漢網(wǎng)站建設(shè)公司 排名如何免費制作自己的網(wǎng)站
注:最后有面試挑戰(zhàn),看看自己掌握了嗎
文章目錄
- XML介紹
- 格式
- XML與AJAX與HTML區(qū)別聯(lián)系
- 生成XML文件案例
- 用SAX模塊處理XML
- 用DOM模塊處理XML
🌸I could be bounded in a nutshell and count myself a king of infinite space.
特別鳴謝:木芯工作室 、Ivan from Russia
XML介紹
xml
是extensible markup language可擴展標記語言
是另外一種帶格式標準的標記語言
可以用來 以文件形式共享 和 處理數(shù)據(jù)
它定義了一組規(guī)則,用以以人類可讀和機器可讀的格式對文檔進行編碼
他非常適合萬維網(wǎng)傳輸
提供統(tǒng)一方法來表述和交換獨立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)
是Internet環(huán)境中跨平臺的、依賴于內(nèi)容的技術(shù),也是當今處理分布式結(jié)構(gòu)信息的有效工具
XML是標準通用標記語言 可擴展性良好,內(nèi)容與形式分離,遵循嚴格的語法要求,保值性良好等優(yōu)點,
在電子計算機中,標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種的信息比如文章等。它可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言。
它非常適合萬維網(wǎng)傳輸,提供統(tǒng)一的方法來描述和交換獨立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。是Internet環(huán)境中跨平臺的、依賴于內(nèi)容的技術(shù),也是當今處理分布式結(jié)構(gòu)信息的有效工具。早在1998年,W3C就發(fā)布了XML1.0規(guī)范,使用它來簡化Internet的文檔信息傳輸。
格式
可擴展標記語言與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,可擴展標記語言僅僅是存儲數(shù)據(jù)。事實上它與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:可擴展標記語言極其簡單,這是一個看上去有點瑣細的優(yōu)點,但正是這點使它與眾不同。
XML的簡單易于在任何應(yīng)用程序中讀/寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換語言(此類語言主要包括XML,JSON等,常用于接口調(diào)用,配置文件,數(shù)據(jù)存儲等場景 ),雖然不同的應(yīng)用軟件也支持其他的數(shù)據(jù)交換格式,但不久之后它們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS、Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析它,并以XML格式輸出結(jié)果。
XML與AJAX與HTML區(qū)別聯(lián)系
1、AJAX
全稱Asynchronous Javascript And XML 就是異步j(luò)s和XML
。通過AJAX可以在瀏覽器中向服務(wù)器發(fā)送異步請求
,最大的優(yōu)勢:無刷新獲取數(shù)據(jù)。
2、XML
(Extensible Maekup Language)可擴展標記語言 被設(shè)計用來傳輸和存儲數(shù)據(jù),和HTML類似,不同的是HTML都是預(yù)定義標簽,而XML沒有預(yù)定義標簽。
它們兩者之間沒有任何的關(guān)系。
HTML被設(shè)計用來描述網(wǎng)頁上的內(nèi)容,是網(wǎng)頁內(nèi)容的載體
XML被設(shè)計用來傳輸和存儲數(shù)據(jù),是數(shù)據(jù)的載體
Ajax接收返回的XML文檔(script)
生成XML文件案例
# coding=gbk
import sys
class BuildNewXML():def __init__(self,filename=None):self.filename = filenameself.__get_f = None #自定義隱含屬性---在類的內(nèi)部使用def openfile(self):if self.filename ==None:print("沒提供文件名字")return Falsetry:self.__get_f = open(self.filename,'a',encoding='utf-8')except:print('沒打開')return Falsedef writeXML(self,n,element):try:if n==0:self.__get_f.write(element+'\n')# 根元素寫入else:self.__get_f.write(' '*n+element+'\n')# 子元素寫入except:print("xie%scuole%s"%(self.filename,element))def closeXML(self):if self.__get_f:self.__get_f.close()
#==================
filename = "storehouse.xml"
flag = False
content = {1:[0,'<storehouse>'],2:[4,'<goods category="fish">'],3:[8,'<title>淡水魚</title>'],4:[8,'<name>鯽魚</name>'],5: [4, '<amount>18</amount>'],6: [8, '<price>8</price>'],7: [4, '</goods>'],8: [4, '<goods category="fruit">'],9: [8, '<title>溫帶水果</title>'],10: [8, '<name>獼猴桃</name>'],11: [8, '<amount>10</amount>'],12: [8, '<price>10</price>'],13: [4, '</goods>'],14:[0,'</storehouse>'],}
build_xml=BuildNewXML(filename)
try:build_xml.openfile()#print(content.items())for get_item in content.items():#print(get_item)#print(get_item[0])#print(get_item[1])#print(get_item[1][0],get_item[1][1]+'\n')build_xml.writeXML(get_item[1][0],get_item[1][1])# 寫入xml文件flag = True
except:print("!!!chucuo")sys.exit()
finally:if flag:build_xml.closeXML()print('xie%swancheng'%(filename))
用SAX模塊處理XML
sax=simple API for XML --------XML的簡單處理API
通過在解析XML過程中觸發(fā)一個個的事件 并且調(diào)用用戶定義的回調(diào)函數(shù)
來處理XML文件
當文件很大的時候非常方便,從磁盤讀取數(shù)據(jù)的時候只讀取需要部分的內(nèi)容。
避免把整個文件內(nèi)容從磁盤讀入內(nèi)存
用DOM模塊處理XML
dom —document object model -------文件對象模型
整個文件被讀入內(nèi)存并分層(基于樹)的形式存儲,以表示xml文檔的所有特征
處理大文件的時候更快