#!/usr/bin/python -u import libxml2 class federated_visualization: class callback: def __init__(self): self.result = { }; self.row = { }; self.node_fields = set(["name", "x", "y", "type"]); self.float_fields = set(["x", "y"]); self.last_chars = ""; pass def startDocument(self): pass def endDocument(self): pass def startElement(self, tag, attrs): if tag == "node": self.row = {} pass def endElement(self, tag): if tag == "node": self.result[self.row["name"]] = self.row; elif tag in self.node_fields: if tag in self.float_fields: self.row[tag] = float(self.last_chars); else: self.row[tag] = self.last_chars; pass pass def characters(self, data): self.last_chars = data; pass def warning(self, msg): print "Warning: %s!" % msg pass def error(self, msg): print "Error: %s!" % msg pass def fatalError(self, msg): global log print "fatalError: %s:" % (msg) def __init__(self, file): self.handler = self.callback() self.result = { }; libxml2.SAXParseFile(self.handler, file, 0); self.result = self.handler.result; libxml2.cleanupParser() pass pass if __name__ == "__main__": import sys; parse = federated_visualization(sys.argv[1]); print parse.result pass