import os import sys import pprint import xml.dom.minidom as minidom from xml.dom.minidom import Node import time def metareader(sam_file,metadata): metadata['key'] = key rFileMeta = os.path.join(sam_file) print("MetaData File: ", rFileMeta) time.sleep(2) if os.path.exists(rFileMeta): if os.path.getsize(rFileMeta) < 1: print("Index empty") else: rFileM = open(rFileMeta,'r') for line in rFileM: mFileC = line rFileM.close() xmldoc = minidom.parse(rFileMeta) keywords= ['Cell', 'CellESD','MountType', 'CrystalSize', 'SpaceGroup', 'ScreenScans', 'CollectScans'] #keywords= ['contributors'] XScansValues = {} for keyword in keywords: if keyword == 'ScreenScans' or keyword == 'CollectScans': print("This is the XScans index what joy") XScans = xmldoc.getElementsByTagName(keyword)[0] #print XScans.toprettyxml() ai = 0 for parent_name in XScans.getElementsByTagName('Scan'): #print parent_name.toprettyxml() #print parent_name.getElementsByTagName('ScanRange')[0].toprettyxml() #print parent_name.getElementsByTagName('GonioAxes')[0].toprettyxml() #print parent_name.getElementsByTagName('DetectorSettings')[0].toprettyxml() #print parent_name.getElementsByTagName('DetectorMode')[0].toprettyxml() ScanRange = parent_name.getElementsByTagName('ScanRange')[0].toxml() GonioAxes = parent_name.getElementsByTagName('GonioAxes')[0].toxml() DetectorSettings = parent_name.getElementsByTagName('DetectorSettings')[0].toxml() DetectorMode = parent_name.getElementsByTagName('DetectorMode')[0].toxml() XScansValues[ai] = {'ScanRange' : ScanRange, 'GonioAxes' : GonioAxes, 'DetectorSettings' : DetectorSettings, 'DetectorMode' : DetectorMode} ai=ai+1 else: reflist = [] name_result = [] try: name = xmldoc.getElementsByTagName(keyword) #print "R: ", keyword, " : ", name[0].toxml().strip() #print "E: ", name[0].attributes except: print("Missing: ", keyword) continue name_result.append(name[0].toxml().strip()) name_result_joined = "".join(name_result) #print "something", name_result_joined metadata[keyword] = name_result_joined metadata['XScansValues'] = XScansValues #print a.value else: print("missing metadata file", rFileMeta) sys.exit(2) return metadata if __name__ == '__main__': key = '/home/xray/olextrunk/jew--B00159--Crystal_2.sam' metadata = {} a = metareader(key, metadata) print("metadata") for keys in a: print(keys,':', a[keys],'\n') """ b = a['authors'] print b for ai in b: print b[ai]['surname'],b[ai]['given_name'] """ """ """