aboutsummaryrefslogtreecommitdiff
path: root/XmlInfo.py
diff options
context:
space:
mode:
Diffstat (limited to 'XmlInfo.py')
-rw-r--r--XmlInfo.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/XmlInfo.py b/XmlInfo.py
new file mode 100644
index 0000000..59ece57
--- /dev/null
+++ b/XmlInfo.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python
+import util.Config as config
+import util.Search as search
+import sys
+"""XmlInfo.py is a module for quick introspection of XML Documents. It will print all the Ids of
+the components defined in an XML document and (if possible) their Doc strings. Usage:
+ python XmlInfo.py [fileName] [-b] [-i]
+ Example:
+ python XmlInfo.py config/C5Sign.xml
+
+With no flags all components are printed. With -b, behaviors are printed. With -i, inputs are
+printed. (And both if both are specified)
+"""
+def loadFile(args):
+ fileName = args[1]
+ parentTags = []
+ if '-b' in args:
+ parentTags.append('BehaviorConfiguration')
+ if '-i' in args:
+ parentTags.append('InputConfiguration')
+ if not parentTags:
+ parentTags = ['InputConfiguration', 'BehaviorConfiguration','PixelConfiguration',
+ 'RendererConfiguration']
+ confRoot = config.loadConfigFile(fileName).getroot()
+ for tag in parentTags:
+ subTree = confRoot.find(tag)
+ print tag + ':'
+ nodesWithArgs = search.parental_tree_search(subTree,'.getchildren()', ".tag=='Args'")
+ nodesWithDocs = search.parental_tree_search(subTree,'.getchildren()', ".tag=='Doc'")
+ for obj in nodesWithArgs:
+ args = obj.find('Args')
+ cidEl = args.find('Id')
+ docEl = args.find('Doc') or obj.find('Doc')
+ classEl = obj.find('Class')
+ cid = None
+ doc = None
+ className = None
+ if cidEl != None:
+ cid = cidEl.text
+ if docEl != None:
+ doc = docEl.text
+ if classEl != None:
+ className = classEl.text
+ print '\tComponent %(id)s - Doc: %(doc)s - Class: %(class)s' % {'id':cid, 'doc':doc,
+ 'class':className}
+if __name__ == "__main__":
+ loadFile(sys.argv)