Я нашел ваш вопрос довольно интересным. Здесь я разработал пример сценария управления для вашего XML-файла.
Сценарий использует ElementTree модуль, который анализирует XML-файлы и легко обращается к их объектам (данным) для чтения или записи изменений в нем.
Также в скрипте есть справка и параметры в качестве примеров, которые вы можете изменить, чтобы получить то, что вы хотите.
Если у вас есть linux или (cygwin | babun) в windows, вы можете сделать собственную команду (псевдоним) в вашем bashrc, чтобы сделать ее еще проще и сделать ее похожей на CLI.
Сценарий
#/usr/bin/python
import sys
import getopt
import xml.etree.ElementTree as ET
tree = ET.parse('properties.xml')
root = tree.getroot()
propFile='properties.xml'
def procComments (newProp) :
for prop in root.findall("./profile/inspection_tool/option/[@name='processComments']"):
prop.set('value',newProp)
tree.write(propFile)
print 'The new value of processComments is: ' + prop.get('value')
def procLits (newProp) :
for prop in root.findall("./profile/inspection_tool/option/[@name='processLiterals']"):
prop.set('value',newProp)
tree.write(propFile)
print 'The new value of processLiterals is: ' + prop.get('value')
def usage() :
print '-h display help'
print 'Usage: python script.py <option> <value>'
print 'Options: '
print ' -c processComments property'
print ' -l processLiterals property'
print 'Values: may be true | false'
try:
opts, args = getopt.getopt(sys.argv[1:], 'c:l:h')
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
sys.exit(2)
elif opt in ('-c''--processComments'):
userProp=sys.argv[2]
procComments(userProp)
elif opt in ('-l', '--processLiterals'):
userProp=sys.argv[2]
procLits(userProp)
else:
usage()
sys.exit(2)
Входной файл (properties.xml)
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="SpellCheckingInspection" enabled="true" enabled_by_default="false" level="TYPO">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
</profile>
Пример использования:
mortiz@alberta:~/.../cli_for_mills_xml$ python mills_parse_xml.py -c false
The new value of processComments is: false
Результат:
mortiz@alberta:~/Documents/projects/python/cli_for_mills_xml$ cat properties.xml
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="SpellCheckingInspection" enabled="true" enabled_by_default="false" level="TYPO">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="false" />
</inspection_tool>
</profile>
</component>