#python #xml #request #binary #xml-namespaces
Вопрос:
Итак, у меня есть ответ на запрос, подобный этому:
resourceType": "Binary",
"id": "07a6483f-732b-461e-86b6-edb665c45510",
"contentType": "application/msword",
"content": "UEsDBBQA.......
И это отображается в моем коде как:
b'<Binary xmlns="http://hl7.org/fhir">rn <id value="07a6483f-732b-461e-86b6-edb665c45510"></id>rn <contentType value="application/msword"></contentType>rn <content value="UEsDBBQ
Мне нужно извлечь значение содержимого и сохранить как, в данном случае, документ Word. Я пробовал решения, основанные на разделении и использовании ElementTree, но, похоже, я не могу проанализировать содержимое и сохранить его в виде файла word.
Прямо сейчас просто делаю это:
with open('/tmp/metadata.doc', 'wb') as f:
f.write(response.content
Приводит к записи всего фрагмента, и Word открывается следующим образом:
Есть какие-нибудь идеи? Заранее спасибо
Ответ №1:
Учитывая, что response.content
это строковая переменная, XML может быть проанализирован с помощью ElementTree:
from xml.etree import ElementTree as etree
# declare namespace
ns = {'ns': 'http://hl7.org/fhir'}
# parse XML
tree = etree.fromstring(response.content)
# find content element considering namespace
content_element = tree.find('.//ns:content', ns)
# extract attribute "value"
content = content_element.get('value')
# save content to file
Комментарии:
1. Спасибо. Совершенство, которое я очень ценю!