1. 程式人生 > >用python快速製作xml檔案

用python快速製作xml檔案

用python快速製作xml檔案

Shawn
python 3.7

  • 因為工作需要, 要用到xml檔案,所以用python寫了個類,以實現快速製作xml檔案.
from xml.dom.minidom import Document
# import xml.dom.minidom

class XmlMaker:


    def __init__(self,txtpath,xmlpath):
        self.txtPath = txtpath
        self.xmlPath = xmlpath
        self.
txtList = [] def readtxt(self): txtfile = open(self.txtPath,"r",encoding='gbk',errors='ignore') self.txtList = txtfile.readlines() for i in self.txtList: oneline = i.strip().split(" ") if len(oneline) != 5: print("TxtError") def
makexml(self): doc = Document() orderpack = doc.createElement("OrderPack") doc.appendChild(orderpack) objecname = "Order" for i in self.txtList: oneline = i.strip().split(" ") objectE = doc.createElement(objecname) objectE.
setAttribute("number",oneline[0]) objectcontent = doc.createElement("Content") objectcontenttext = doc.createTextNode(oneline[1]) objectcontent.appendChild(objectcontenttext) objectE.appendChild(objectcontent) objectresult = doc.createElement("Result") objectresulttext = doc.createTextNode(oneline[2]) objectresult.appendChild(objectresulttext) objectE.appendChild(objectresult) objectappname = doc.createElement("AppName") objectappnametext = doc.createTextNode(oneline[3]) objectappname.appendChild(objectappnametext) objectE.appendChild(objectappname) objectdelay = doc.createElement("Delay") objectdelaytext = doc.createTextNode(oneline[4]) objectdelay.appendChild(objectdelaytext) objectE.appendChild(objectdelay) orderpack.appendChild(objectE) f = open(self.xmlPath, 'w') doc.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='gbk') f.close() if __name__ == "__main__": read =XmlMaker("test.txt","test.xml") read.readtxt() read.makexml() print(read.txtPath) for i in read.txtList: print(i)
  • 過程相當簡單,讀取檔案,然後寫成xml.
  • 需要注意的是,python中轉換中文編碼需要小心地選擇編碼模式,而且放在pycharm裡效果可能會更糟糕(亂碼).
  • demo 檔案:
0 命令0 結果0 app名0 延遲0
1 命令1 結果1 app名1 延遲1
2 命令2 結果2 app名2 延遲2
3 命令3 結果3 app名3 延遲3
4 命令4 結果4 app名4 延遲4
5 命令5 結果5 app名5 延遲5
  • 生成結果:
<?xml version="1.0" encoding="gbk"?>
	<OrderPack>
		<Order number="0">
			<Content>命令0</Content>
			<Result>結果0</Result>
			<AppName>app名0</AppName>
			<Delay>延遲0</Delay>
		</Order>
		<Order number="1">
			<Content>命令1</Content>
			<Result>結果1</Result>
			<AppName>app名1</AppName>
			<Delay>延遲1</Delay>
		</Order>
		<Order number="2">
			<Content>命令2</Content>
			<Result>結果2</Result>
			<AppName>app名2</AppName>
			<Delay>延遲2</Delay>
		</Order>
		<Order number="3">
			<Content>命令3</Content>
			<Result>結果3</Result>
			<AppName>app名3</AppName>
			<Delay>延遲3</Delay>
		</Order>
		<Order number="4">
			<Content>命令4</Content>
			<Result>結果4</Result>
			<AppName>app名4</AppName>
			<Delay>延遲4</Delay>
		</Order>
		<Order number="5">
			<Content>命令5</Content>
			<Result>結果5</Result>
			<AppName>app名5</AppName>
			<Delay>延遲5</Delay>
		</Order>
	</OrderPack>