-
-
Save syb0rg/59ede2c221b698b0abc1ebeb8af45079 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xml.dom.minidom as minidom | |
from xml.etree import ElementTree as etree | |
def strip(elem): | |
for elem in elem.getiterator(): | |
if(elem.text): | |
elem.text = elem.text.strip() | |
if(elem.tail): | |
elem.tail = elem.tail.strip() | |
def removeBranch(tree, name): | |
root = tree.getroot() | |
parent_map = dict((c, p) for p in tree.getiterator() for c in p) | |
for item in list(root.getiterator(name)): | |
parent_map[item].remove(item) | |
def addLocalDataBranch(tree, num): | |
parent = tree.find('.//LocalDataValues') | |
parent.set('Count', str(num)) | |
for val in xrange(1, num+1): | |
item = etree.SubElement(parent, 'Ldv') | |
name = etree.SubElement(item, 'Name') | |
name.text = 'Osiris_Local_Data_' + str(val) | |
type = etree.SubElement(item, 'DataType') | |
type.text = 'realQTimetagExtended' | |
source = etree.SubElement(item, 'NormalSource') | |
source.text = 'Telemetered' | |
def addServerDataBranch(tree, num): | |
parent = tree.find('.//ServerDataValues') | |
parent.set('Count', str(num)) | |
for val in xrange(1, num+1): | |
item = etree.SubElement(parent, 'Sdv') | |
name = etree.SubElement(item, 'ObjName') | |
name.set('Scope', 'ICC') | |
name.text = 'Osiris_Local_Data_' + str(val) | |
type = etree.SubElement(item, 'DataType') | |
type.text = 'realQTimetagExtended' | |
source = etree.SubElement(item, 'ReadOnly') | |
source.text = 'Y' | |
def addClientDataBranch(tree, num): | |
parent = tree.find('.//ClientDataValues') | |
parent.set('Count', str(num)) | |
for val in xrange(1, num+1): | |
item = etree.SubElement(parent, 'Cdv') | |
name = etree.SubElement(item, 'ObjName') | |
name.set('Scope', 'ICC') | |
name.text = 'Osiris_Test_Data_' + str(val) | |
type = etree.SubElement(item, 'DataType') | |
type.text = 'realQTimetagExtended' | |
source = etree.SubElement(item, 'ReadOnly') | |
source.text = 'Y' | |
def addDataSetBranch(tree, num): | |
root = tree.getroot() | |
parent = root.find('RemoteControlCenters').find('RemoteControlCenter').find('ClientObjects').find('ClientDataSets').find('Cds') | |
for thing in parent: | |
print thing.tag | |
print tree.findall('.//CdsVars') | |
parent.set('Count', str(num)) | |
for val in xrange(1, num+1): | |
item = etree.SubElement(parent, 'CdsVar') | |
item.set('Name', 'Osiris_Test_Data_' + str(val)) | |
item.set('Scope', 'ICC') | |
item.set('Type', 'Dv') | |
if __name__ == '__main__': | |
import sys | |
if len(sys.argv[1:]) != 3: | |
print('Usage: python setup.py [xml] [points] [time]') | |
sys.exit(1) | |
tree = etree.parse(sys.argv[1]) | |
removeBranch(tree, 'Ldv') | |
removeBranch(tree, 'Sdv') | |
removeBranch(tree, 'Cdv') | |
removeBranch(tree, 'CdsVars') | |
addLocalDataBranch(tree, int(sys.argv[2])) | |
addServerDataBranch(tree, int(sys.argv[2])) | |
addClientDataBranch(tree, int(sys.argv[2])) | |
addDataSetBranch(tree, int(sys.argv[2])) | |
strip(tree.getroot()) | |
#print minidom.parseString(etree.tostring(tree.getroot(), 'utf-8')).toprettyxml() | |
#file = open(sys.argv[1], 'wb') | |
#file.write(minidom.parseString(etree.tostring(tree.getroot(), 'utf-8')).toprettyxml()) | |
#file.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment