XML模块解析tomcat配置文件
可参考官网https://github.com/python/cpython/blob/3.6/Lib/xml/etree/ElementTree.py
XML包括tag,attrib,text
遍历查看
import xml.etree.ElementTree as ET tree = ET.parse("server.xml") root = tree.getroot() print(root.tag) for child in root: print(child.tag, child.attrib) for i in child: print(i.tag, i.attrib) for n in i: print (n.tag,n.attrib) for m in n: print(m.tag, m.attrib)
修改配置(属性修改,新增也可以用set)
import xml.etree.ElementTree as ET tree = ET.parse("server.xml") root = tree.getroot() print(root.tag) for node in root.iter('Connector'): protoco=node.get('protocol') if protoco=='HTTP/1.1': node.set('port','8080') print (node.tag,node.attrib) tree.write("server.xml") #重新生成配置文件
新增标签
import xml.etree.ElementTree as ET tree = ET.parse("server.xml") root = tree.getroot()for node in root.iter('Service'): name=ET.Element("Connector", attrib={"enrolled": "yes"}) node.insert(1,name) tree.write("server_new.xml")
删除配置
删除标签 import xml.etree.ElementTree as ET tree = ET.parse("server.xml") root = tree.getroot() print(root.tag) for node in root.findall('Service'): for i in node.findall('Connector'): protoco=i.get('protocol') if protoco=='HTTP/1.1': node.remove(i) #从node列表中删除 tree.write("server_new.xml") #方法二 import xml.etree.ElementTree as ET tree = ET.parse("server.xml") root = tree.getroot() print(root.tag) for node in root: for i in node: pro=i.attrib.get('protocol') if pro=='AJP/1.3': node.remove(i) tree.write('server_new.xml,encoding='utf-8') 删除属性(可以用attrib方法获取属性字典,再用字典方法操作) import xml.etree.ElementTree as ET tree = ET.parse("server.xml") root = tree.getroot() print(root.tag) for node in root: for i in node: pro=i.attrib.get('protocol') if pro=='HTTP/1.1': i.attrib.pop('connectionTimeout') tree.write("server_new.xml")
坚持到无能为力,拼搏到感动自己