先上代碼:
1 #!/usr/bin/env python3 2 # _*_ coding: utf-8 _*_ 3 from xml.dom.minidom import Document 6 7 def readFile(filename, lines): 8 with open(filename, 'r') as f: 9 for line in f: 10 line = line.rstrip(' \n') 11 if line.startswith('//') or len(line) == 0: 12 continue 13 lines.append(line) 14 15 def writeXml(filename, lines, tagNames): 16 # 創建doc 17 doc = Document() 18 # 創建根節點 19 root = doc.createElement(tagNames[0]) 20 doc.appendChild(root) 21 22 # 記錄每層節點的最新元素 23 nodes = {0: root} 24 25 for line in lines: 26 index = line.rfind(' ') 27 level = (index + 1) / 4 + 1 28 line = line.lstrip(' ') 29 30 node = doc.createElement(tagNames[level]) 31 node.setAttribute('name', line) 32 33 nodes[level - 1].appendChild(node) 34 nodes[level] = node 35 36 with open(filename, 'w') as f: 37 f.write(doc.toprettyxml(indent='\t')) 38 39 def display(lines): 40 for line in lines: 41 print(line) 42 43 if __name__ == '__main__': 44 lines = [] 45 readFile('./file/sector.txt', lines) 46 47 tagNames = ['SectorFile', 'Sectors', 'sector', 'sector_second'] 48 writeXml('./file/sector.xml', lines, tagNames)
1. 使用庫 xml.dom.minidom
2. readFile函數
這個函數的功能上讀取文件,並把每一行內容除去右邊空格,存入列表中
參數一:文件名
參數二:文件行存入的列表
3. writeXml函數
功能:讀取列表,生成xml文件
參數一:生成的xml文件名
參數二:文件行列表
參數三:xml標簽名
此處讀取的文件,左側是通過tab鍵進行分層的。但由於編輯器設置的一個tab鍵,替換成四個空格。所以此處的規律是查找最后一個空格出現的位置,加1除4就可以得到該文件在xml中所處的層級。
第22行:此處的目的是建立一個level-node的字典,用於存放當前層級的最新節點。便於字節點查找父節點