用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>

猜你喜欢

转载自blog.csdn.net/weixin_41084236/article/details/83107237