读写XML
以下用例为修改pom.xml中的版本号
我的用例
以下例子:从release.pro.xml中读取版本前缀,填充到图中标记处。
import sys
import xml.etree.ElementTree as ET
import datetime
class CommentedTreeBuilder(ET.TreeBuilder):
def comment(self, data):
self.start(ET.Comment, {})
self.data(data)
self.end(ET.Comment)
parser = ET.XMLParser(target=CommentedTreeBuilder())
def updateVersion(pomPath='pom.xml', proPath='release.pro.xml'):
# 获取新version
proV = getProVersion(proPath)
# 注册命名空间
ET.register_namespace('', 'http://maven.apache.org/POM/4.0.0')
tree = ET.parse(pomPath, parser) # parser参数默认为None,不保留注释,需要自定义
root = tree.getroot() # 第一层
for sub in root:
if str(sub.tag).endswith('parent'):
for subChild in sub:
if str(subChild.tag).endswith('version'):
subChild.text = proV
break
break
tree.write(pomPath, encoding="utf-8", xml_declaration=True)
# 获取pro中的version
def getProVersion(proPath):
fileName = proPath
tree = ET.parse(fileName)
root = tree.getroot() # 第一层
v = ""
for child in root:
if child.tag == 'main':
v = child.text
return v
if __name__ == '__main__':
if len(sys.argv) == 1:
updateVersion()
if len(sys.argv) > 1:
updateVersion(sys.argv[1])
elif len(sys.argv) > 2:
updateVersion(sys.argv[1], sys.argv[2])