python 注释xml的元素

use xml.dom.minidom 注释xml元素和去除xml注释。


code is:

#
!/usr/bin/env python from xml.dom import minidom import sys ''' get the first web system element, like: <subsystem xmlns="urn:jboss:domain:web:..."> Note, should have only one web system element, if have multiple, the other will be ignored. ''' def getWebSystemElement(xmlPath): doc = minidom.parse(xmlPath).documentElement subsystems = doc.getElementsByTagName('subsystem') for subsystem in subsystems: if subsystem.getAttribute("xmlns").startswith("urn:jboss:domain:web:"): return subsystem; ''' change to https type uncomment HTTPS, make HTTPS effective comment HTTP, make HTTP uneffective ''' def changeToHttps(webSystem): # comment the HTTP for node in webSystem.childNodes: if node.nodeType == node.ELEMENT_NODE and node.nodeName == "connector" and node.getAttribute("name") == "http": comment = node.ownerDocument.createComment(node.toxml()) node.parentNode.replaceChild(comment, node) else: pass # uncomment the HTTPS for node in webSystem.childNodes: if(node.nodeType == node.COMMENT_NODE): # parse the comment content to element element = minidom.parseString(node.data).firstChild elements = minidom.parseString(node.data) for element in elements.childNodes: if element.nodeType == node.ELEMENT_NODE and element.tagName == "connector" and element.getAttribute("name") == "https": node.parentNode.replaceChild(element, node) else: pass ''' change to http type uncomment HTTP, make HTTP effective comment HTTPS, make HTTPS uneffective ''' def changeToHttp(webSystem): # comment the HTTPS for node in webSystem.childNodes: if node.nodeType == node.ELEMENT_NODE and node.tagName == "connector" and node.getAttribute("name") == "https": # create commented httpsElement comment = node.ownerDocument.createComment(node.toxml()) node.parentNode.replaceChild(comment, node) else: pass # uncomment the HTTP for node in webSystem.childNodes: if node.nodeType == node.COMMENT_NODE: # parse the content in the comment to httpsElement elements = minidom.parseString(node.data) for element in elements.childNodes: if element.nodeType == node.ELEMENT_NODE and element.tagName == "connector" and element.getAttribute("name") == "http": node.parentNode.replaceChild(element, node) else: pass def switchWithException(inputPath, outputPath, hType): if hType == "http": webSystem = getWebSystemElement(inputPath) changeToHttp(webSystem) with open(outputPath, 'w') as wf: c = webSystem.ownerDocument.toxml() wf.write(c) return True elif hType == "https": webSystem = getWebSystemElement(inputPath) changeToHttps(webSystem) with open(outputPath, 'w') as wf: c = webSystem.ownerDocument.toxml() wf.write(c) return True else: print "Type " + hType + " should be http or https" return False ''' switch the http/https type in the standalone.xml inputPath: the input path of standalone.xml, include the file name outputPath: the output path of standalone.xml, include the file name ''' def switch(inputPath, outputPath, hType): try: return switchWithException(inputPath, outputPath, hType) except BaseException as e: print e return False ''' ./switch_http_htts.py inputPath outputPath <http or https> ''' if __name__ == '__main__': if len(sys.argv) != 4 : print 'Invalid length of parameter list' sys.exit(1) if switch(sys.argv[1], sys.argv[2],sys.argv[3]): sys.exit(0) else: sys.exit(1)

 

转载于:https://www.cnblogs.com/lpthread/p/3461827.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值