def __init__(self,name="dwca.zip",skipeml=False): self.archive = zipfile.ZipFile(name, 'r') self.archive.extractall(name.split(".")[0]) rdict = {} with open(name.split(".")[0] + "/" + archiveFile(self.archive,"meta.xml"),'r') as meta: root = etree.parse(meta).getroot() rdict = xmlDictTools.xml2d(root) self.archdict = rdict["archive"] if not skipeml and "#metadata" in self.archdict: metadata = archiveFile(self.archive,self.archdict["#metadata"]) with open(name.split(".")[0] + "/" + metadata,'r') as mf: mdtree = etree.parse(mf).getroot() self.metadata = xmlDictTools.xml2d(mdtree) else: self.metadata = None corefile = archiveFile(self.archive,self.archdict["core"]["files"]["location"]) self.core = DwcaRecordFile(self.archdict["core"], name.split(".")[0] + "/" + corefile) self.extensions = [] if "extension" in self.archdict: if isinstance(self.archdict["extension"],list): for x in self.archdict["extension"]: extfile = archiveFile(self.archive,x["files"]["location"]) try: self.extensions.append(DwcaRecordFile(x, name.split(".")[0] + "/" + extfile)) except: pass else: extfile = archiveFile(self.archive,self.archdict["extension"]["files"]["location"]) self.extensions.append(DwcaRecordFile(self.archdict["extension"], name.split(".")[0] + "/" + extfile))
def __init__(self,name="dwca.zip"): self.archive = zipfile.ZipFile(name, 'r') meta = self.archive.open('meta.xml','r') root = etree.parse(meta).getroot() rdict = xmlDictTools.xml2d(root) self.archdict = rdict["archive"] metadata = self.archdict["#metadata"] mf = self.archive.open(metadata,'r') mdtree = etree.parse(mf).getroot() self.metadata = xmlDictTools.xml2d(mdtree) corefile = self.archdict["core"]["files"]["location"] self.core = DwcaRecordFile(self.archdict["core"], self.archive.open(corefile,'r')) self.extensions = [] if "extension" in self.archdict: if isinstance(self.archdict["extension"],list): for x in self.archdict["extension"]: extfile = x["files"]["location"] self.extensions.append(DwcaRecordFile(x, self.archive.open(extfile,'r'))) else: extfile = self.archdict["extension"]["files"]["location"] self.extensions.append(DwcaRecordFile(self.archdict["extension"], self.archive.open(extfile,'r')))