import xml.dom.minidom, sys from CompactTokenizer import CompactTokenizer def expand(elem): global ct,doc ct.skip("[") while ct.getToken()=='@': attName = ct.nextToken() ct.nextToken() elem.setAttribute(attName,ct.skip("[")) ct.nextToken() ct.skip("]") while ct.getToken()!=']': s=ct.getToken().strip() ct.nextToken() if ct.getToken()=="[": expand(elem.appendChild(doc.createElement(s.strip()))) else: elem.appendChild(doc.createTextNode(s)) ct.skip("]") return elem doc = xml.dom.minidom.Document() ct = CompactTokenizer(sys.stdin) while ct.nextToken()!='[': rootName=ct.getToken() expand(doc.appendChild(doc.createElement(rootName.strip()))) print (doc.toprettyxml(" "))