def _get_image_metadata(self, body): deserializer = wsgi.XMLDeserializer() volume = deserializer.find_first_child_named(minidom.parseString(body), 'volume') image_metadata = deserializer.find_first_child_named( volume, 'volume_image_metadata') return wsgi.MetadataXMLDeserializer().extract_metadata(image_metadata)
def _get_image_metadata_list(self, body): deserializer = wsgi.XMLDeserializer() volumes = deserializer.find_first_child_named( minidom.parseString(body), 'volumes') volume_list = deserializer.find_children_named(volumes, 'volume') image_metadata_list = [ deserializer.find_first_child_named(volume, 'volume_image_metadata') for volume in volume_list ] return map(wsgi.MetadataXMLDeserializer().extract_metadata, image_metadata_list)
def test_xml_meta_parsing_special_character(self): """Test that when a SaxParser splits a string containing special characters into multiple childNodes there are no issues extracting the text. """ meta_xml_str = """ <metadata> <meta key="key3">value&3</meta> <meta key="key2">value2</meta> <meta key="key1">value1</meta> </metadata> """.strip() meta_expected = {'key1': 'value1', 'key2': 'value2', 'key3': 'value&3'} meta_deserializer = wsgi.MetadataXMLDeserializer() document = wsgi.utils.safe_minidom_parse_string(meta_xml_str) root_node = document.childNodes[0] meta_extracted = meta_deserializer.extract_metadata(root_node) self.assertEqual(meta_expected, meta_extracted)