def metajson_to_oai_dc_xmletree(document, with_schema_location=True): """ MetaJSON Document -> oai_dc xmletree """ rec_id = document["rec_id"] xmletree.register_namespaces() # oai_dc root oai_dc = ET.Element(xmletree.prefixtag("oai_dc", "oai_dc")) if with_schema_location: oai_dc.set(xmletree.prefixtag("xsi", "schemaLocation"), constants.xmlns_map["oai_dc"] + " " + constants.xmlns_schema_map["oai_dc"]) # title if "title" in document: dc_title = ET.SubElement(oai_dc, xmletree.prefixtag("dc", "title")) dc_title.text = document["title"] # creators if "creators" in document and document["creators"]: for creator in document["creators"]: if "roles" in creator and creator["roles"] and creator["roles"][0]: creator_role = creator["roles"][0] if creator_role in creator_service.role_type and creator_service.role_type[creator_role] == creator_service.role_type_creator: dc_creator = ET.SubElement(oai_dc, xmletree.prefixtag("dc", "creator")) dc_creator.text = creator.formatted_name(metajson.STYLE_FAMILY_COMMA_GIVEN) continue dc_contributor = ET.SubElement(oai_dc, xmletree.prefixtag("dc", "contributor")) dc_contributor.text = creator.formatted_name(metajson.STYLE_FAMILY_COMMA_GIVEN) return (rec_id, oai_dc)
def parse_xmletree_str(input_string): xmletree.register_namespaces() return ET.fromstring(input_string)
def response_to_xmletree(response): xmletree.register_namespaces() return ET.fromstring(response.content)