用python快速製作xml檔案
阿新 • • 發佈:2018-11-10
用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>