1. 程式人生 > 實用技巧 >XML格式

XML格式

XML(Extensible Markup Language,可擴充套件標記語言)

<storehouse>
	<goods category="fish">
		<title>淡水魚</title>
		<name>鯽魚</name>
		<amount>18</amount>
		<price>8</price>
	</goods>
	<goods category="fruit">
		<title>溫帶水果</title>
		<name>獼猴桃</name>
		<amount>10</amount>
		<price>10</price>
	</goods>
</storehouse>

(1)根元素.任何XML資料文件必須包含根文件,示例根元素為...
(2)子元素. ...等都是子元素
(3)標籤.帶<>的為標籤,為開始標籤,為元素結束標籤
(4)巢狀元素之間採用縮排格式,建議採用空4個空格的標準縮排格式
(5)屬性
(6)文字

XML樹形結構主要包括元素.屬性.文字三要素

生成XML檔案

import sys
class BuildNewXML():                            #自定義建立XML檔案
    def __init__(self,filename=None):           #類的初始化保留__init__
        self.filename=filename                  #自定義屬性filename
        self.__get_f=None                       #自定義隱函式型(內內部使用)
    def openfile(self):                         #自定義開啟xml類函式openfile
        if self.filename==None:                 #如果沒有檔名則給出出錯提示
            print("沒有提供檔名!在建立例項時,請提供建立文字的名稱!")
            return False                        #返回False並終止後續程式碼繼續執行
        try:
            self.__get_f=open(self.filename,'a',encoding='utf-8')        #開啟檔案
        except:
            print('開啟%s檔案有問題!'%(self.filename))                    #打開出錯
            return False
    def writeXML(self,n,element):
        try:
            if n==0:                                                    #根元素寫入
                self.__get_f.write(element+'\n')
            else:
                self.__get_f.write(''*n+element+'\n')
        except:
            print('往%s檔案寫%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: [8, '<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()
    for get_item in content.items():                        #迴圈讀取寫入字典物件元素
        build_xml.writeXML(get_item[1][0],get_item[1][1])   #寫入XML檔案
    flag=True
except:
    print('往檔案裡寫內容出錯,退出程式!')
    sys.exit()
finally:
    if flag:
        build_xml.closeXML()                                #正常關閉開啟的XML檔案
        print('往%s寫內容完成'%(filename))

#執行結果:往storehouse.xml寫內容完成