def __init__(self, element): """ element is a row element containing an unknown number of cells. the last cell is where the data is, the others are "indents", which determin this node's "level" """ cells = XmlUtils.getChildElements(element, "TD") self.level = len(cells) - 1 dataCell = cells[-1] components = XmlUtils.getChildElements(dataCell, "A") icon = components[0] img = XmlUtils.getChild("IMG", icon) filename = os.path.split(img.getAttribute("SRC"))[1] self.type = filename.split(".")[0] self.metadatapath = webcatUtils.webcatDomain + icon.getAttribute( "HREF") linkElement = components[1] url = linkElement.getAttribute("HREF") label = XmlUtils.getText(linkElement) self.link = webcatUtils.WebCatLink((url, label)) self.title = self.link.label self.parent = None self.children = None
def getRowCells(self, row, rowNum): cells = self.selectNodes(row, 'td') data = [] add = data.append for i, cell in enumerate(cells): if i == 1: if rowNum == 0: # hdr add(XmlUtils.getText(cell)) add('url') else: link = XmlUtils.getChild('a', cell) if link == None: if rowNum == 1: add('') add('') continue else: raise NoTopPickDataError, 'No link found in row %d' % rowNum add(XmlUtils.getText(link)) add(link.getAttribute('href')) else: add(XmlUtils.getText(cell)) return map(self.cleanCellData, data)
def __init__(self, element, unit): self.unit = unit self.name = urllib.unquote(XmlUtils.getChildText( element, 'Name')) # take the %20s out source = XmlUtils.getChild('WorksheetSource', element) self.href = urllib.unquote( source.getAttribute('HRef')) # take the %20s out self.data_path = os.path.join(utils.ingest_data_dir, self.unit, self.href)
def __init__(self, element): Contributor.__init__(self, element) self.type = 'organization' organization = XmlUtils.getChild('organization', element) if not organization: raise Exception, 'organization not found in %s' % self.element.toxml( ) self.instName = XmlUtils.getChildText(organization, 'instName') self.instDept = XmlUtils.getChildText(organization, 'instDept') self.instEmail = XmlUtils.getChildText(organization, 'instEmail')
def populateXml (self, xmlData): dataRec = XmlRecord (xml=xmlData) dataElements = dataRec.getElements (dataRec.doc) for dataElement in dataElements: cells = XmlUtils.getChildElements (dataElement, "TD") name = XmlUtils.getText (cells[0]).strip() if name[-1] == ":": name = name[:-1] value = XmlUtils.getText (XmlUtils.getChild ("B", cells[1])).strip() XmlUtils.addChild (self.dom, self.normalizeTagName(name), value)
def __init__(self, element): Contributor.__init__(self, element) self.type = 'person' person = XmlUtils.getChild('person', element) if not person: raise Exception, 'person not found in %s' % self.element.toxml() self.nameFirst = XmlUtils.getChildText(person, 'nameFirst') self.nameLast = XmlUtils.getChildText(person, 'nameLast') self.instName = XmlUtils.getChildText(person, 'instName') self.instDept = XmlUtils.getChildText(person, 'instDept') self.emailPrimary = XmlUtils.getChildText(person, 'emailPrimary')
def setInstName (self, instName): """ Affiliations have ONE instName element if an instName element does not exist, create one set the text of the instName element to provided instName value """ instNameEl = XmlUtils.getChild ('instName', self.element) if not instNameEl: instNameEl = self.element.appendChild (XmlUtils.createElement('instName')) print 'created instNameEl: ' + instNameEl.toxml() XnlUtils.setText(instNameEl, instName) return instNameEl
def __init__(self, recInfo, diff=[]): self.recInfo = recInfo # a RecordInfo instance self.diff = diff self.rec = self.recInfo.getOsmRecord() # a OsmRecord instance self.html = DIV(klass='cmp-record') for tag in top_level_elements: element = XmlUtils.getChild(tag, self.rec.doc) if not element: setattr(self, tag, None) else: setattr(self, tag, self.getTopLevelElement(element, 2))
def getResourceIds (path): rec = XmlRecord(path=path) item_nodes = rec.selectNodes(rec.dom, 'playList:items:item') # print '%d item_nodes found' % len(item_nodes) ids=[];add=ids.append for node in item_nodes: if node.getAttribute('type') == 'ccs_saved_resource': id_node = XmlUtils.getChild ('id', node) add (XmlUtils.getText(id_node)) ids = filter (lambda x:not x.startswith('CCS'), ids) return ids
def __init__(self, element=None, data=None): self.object = self.relationship = self.num = self.objectTitle = self.id = self.idType = '' if element: self.object = element.getAttribute('object') or '' self.relationship = element.getAttribute('relationship') or '' self.num = element.getAttribute('num') or '' self.objectTitle = element.getAttribute('objectTitle') idEl = XmlUtils.getChild('id', element) if idEl: self.id = XmlUtils.getText(idEl) or "" self.idType = idEl.getAttribute('type') or '' if data: for attr in data.keys(): setattr(self, attr, data[attr])
def __init__(self, search_result): self.result = search_result # an OsmSearchResult instance self.collectionName = self.result.collectionName self.rec = self.result.payload # a OsmRecord instance self.html = DIV(klass='cmp-record') for tag in top_level_elements: element = XmlUtils.getChild(tag, self.rec.doc) if not element: setattr(self, tag, None) else: setattr(self, tag, self.getTopLevelElement(element, 2)) if tag == 'resources': print "%s - %s (%s)" % (self.result.recId, self.resources, type(self.resources))
def getAffiliation (self, instName): """ affilations are associated with ONE instName returns Affilation instance for provided instName, creating if necessary """ affiliationEl = None for node in self.getAffiliationElements(): instNameEl = XmlUtils.getChild('instName', node) if XmlUtils.getText(instNameEl) == instName: affiliationEl = node break if not affiliationEl: affiliationEl = self.element.appendChild (XmlUtils.createElement('affiliation')) instNameEl = affiliationEl.appendChild (XmlUtils.createElement('instName')) XmlUtils.setText(instNameEl, instName) return Affiliation (affiliationEl)
def getContributorPeople(self): personFilter = lambda x: XmlUtils.getChild('person', x) nodes = filter(personFilter, self.getContributorNodes()) return map(ContributorPerson, nodes)
def getSubElementResource (self, element, tagName): subElement = XmlUtils.getChild (tagName, element) if subElement: return subElement.getAttribute ("rdf:resource")
def getContactInfoProp (self, prop): contactInfoEl = XmlUtils.getChild ('contactInfo', self.element) if not contactInfoEl: return None return contactInfoEl.getAttribute(prop)
def setContactInfoProp (self, prop, val): contactInfoEl = XmlUtils.getChild ('contactInfo', self.element) if not contactInfoEl: contactInfoEl = self.element.appendChild (XmlUtils.createElement ('contactInfo')) contactInfoEl.setAttribute (prop, val)
def setChildElementValue (self, tag, value): # print "TAG:%s, VALUE: %s" % (tag, value) child = XmlUtils.getChild (tag, self.element) if not child: child = self.element.appendChild(XmlUtils.createElement(tag)) XmlUtils.setText (child, value)
def getSubElementText (self, element, tagName): subElement = XmlUtils.getChild (tagName, element) if subElement: return XmlUtils.getText (subElement)
def getSubElementText(self, tagName, element=None): element = element or self.root subElement = XmlUtils.getChild(tagName, element) if subElement: return XmlUtils.getText(subElement)
def setNameLast(self, name): node = XmlUtils.getChild('nameLast', self.element) if not node: node = XmlUtils.createElement('nameLast') self.element.appendChild(node) XmlUtils.setText(node, name)
def getSubElementResource(self, tagName, element=None): element = element or self.root subElement = XmlUtils.getChild(tagName, element) if subElement: return subElement.getAttribute("rdf:resource")